【问题标题】:Flutter/Dart: save data in different documents in firestoreFlutter / Dart:将数据保存在firestore的不同文档中
【发布时间】:2018-08-22 06:20:07
【问题描述】:

我正在尝试使用以下代码将数据添加到 Firestore。
我选择了几个特征,例如食物、字段、日期、时间和位置。 当我按下一个按钮 Future _addAll 函数被调用并将上面的数据保存到firestore中。

保存后页面移动到主页面。问题从这里开始。当我选择不同的数据并尝试使用新的 documentID 将其保存到 firestore 时,除非我刷新页面,否则它只会覆盖上一个文档。

具体来说,当我按下按钮时,数据存储在名为
-LKV8ZPIAUwk329KqMac 的文档中。当我选择不同的数据并尝试保存到新文档时,它再次保存在
-LKV8ZPIAUwk329KqMac

有没有办法每次按下它都会保存到一个新文档:) 提前谢谢你。

Future _addAll(BuildContext context, List chooseFood, List chooseField, String date, String time,
double latitude, double longitude, String text, String uid, String partnerUid) async {
  _controller.clear(); //clear text message
  var sendRequestID; //variable to store documentID
  List connections = new List();

auth.currentUser().then((user) async { //save data to collection('connect')
await docRef.setData({
  'createdTime': DateTime.now(),
  'foods': chooseFood,
  'fields': chooseField,
  'meet_date': date,
  'meet_time': time,
  'latitude': latitude,
  'longitude': longitude,
  'one_word': text,
}).whenComplete(() {
  sendRequestID = docRef.documentID;
  print("DB 저장 $sendRequestID");
  connections.add(sendRequestID);
}).catchError((e) => print(e));

await docRef.collection('connected_users').document('send_request').setData({ //create collection inside a collection
  'email': user.email,
  'name': user.displayName,
  'photoUrl': user.photoUrl
}).catchError((e)=>print(e));
}

【问题讨论】:

  • 如何获得docRef
  • 抱歉细节不全,docRef 是Firestore.instance.collection('connect').document()

标签: firebase dart flutter google-cloud-firestore


【解决方案1】:

您可以使用collection(...).add(data),相当于collection(...).document().setData(data)
这将添加一个新文档。您必须在 CollectionReference 上使用它。

【讨论】:

  • 我使用Firestore.instance.collection('connect').document() 设置数据,如何将其更改为CollectionReference?是不是像CollectionReference col = Firestore.instance.collection('connect')
  • 我改为`Firestore.instance.collection('connect').add(data)` 但我收到错误flutter: The following NoSuchMethodError was thrown building StreamBuilder<QuerySnapshot>(dirty, state: flutter: _StreamBuilderBaseState<QuerySnapshot, AsyncSnapshot<QuerySnapshot>>#f517c): flutter: The getter 'documents' was called on null.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
  • 2018-06-25
  • 2022-01-21
相关资源
最近更新 更多