rameez khan
rameez khan

Reputation: 359

Flutter firestore add collection and data in document

I want to add data and collection both I am trying like this

  Future<void> createRoom(collection, docid, data) async {
    await FirebaseFirestore.instance
        .collection(collection)
        .doc()
        .set(data)
        .collection('messages');
  }

But its showing error The method 'collection' isn't defined for the type 'Future'.

Upvotes: 1

Views: 7057

Answers (1)

Dharmaraj
Dharmaraj

Reputation: 50930

If you are trying to set a document in a sub-collection then first create a DocumentReference to that collection and then use set():

await FirebaseFirestore.instance
  .collection(collection)
  .doc("doc_id")
  .collection('messages')
  .doc("msg_id")
  .set(data)

Do note that you should pass document ID in doc() else it'll generate a random ID every time instead updating existing one.


I want to add data and collection both

You don't need to create a collection explicitly if you are not adding a document yet. It'll be created at the time you add first document in collection. So try refactoring the code as shown below:

Future<void> createRoom(collection, docid, data) async {
  await FirebaseFirestore.instance
    .collection(collection)
    .doc("doc_Id")
    .set(data);

  // simply add a document in messages sub-collection when needed.
}

Also checkout: How to create collection in Cloud Firestore from Javascript?

Upvotes: 5

Related Questions