【问题标题】:Flutter firestore set data and get document IDFlutter Firestore 设置数据并获取文档 ID
【发布时间】:2020-12-21 17:36:24
【问题描述】:

我正在尝试在将新项目发布到 Firestore 时获取新创建的文档。

我知道还有其他类似的问题,我试过了!但没有得到我希望的输出。

所以基本上,我set 一堆数据,然后我在then 中执行doc().id,它返回的 id 不存在于我的 firestore 中,也不匹配我创建的任何文档。

代码:

return _userRef.doc(_user.uid).collection(collName).doc().set({
      'item_name': name,
      'item_description': description,
      'item_location':
          GeoPoint(_locationData.latitude, _locationData.longitude),
      'item_date': DateTime.now(),
      'item_images': imageMap,
    }).then((value) {   
      print('${_userRef.doc(_user.uid).collection(collName).doc().id}');
    });

我看到了另一个问题:

 var ref = _userRef
              .doc(_user.uid)
              .collection(collName)
              .get()
              .then((value) => print('hello ***** ${value.docs[0].id}'));

但这只是返回文档列表中的第一个文档!我想在set 之前加载一个数组,然后在set 之后加载第二个数组,然后比较这两个数组并找出奇怪的人。但是,如果我有一个庞大的列表,那将需要很长时间!

有什么想法吗??

【问题讨论】:

    标签: flutter google-cloud-firestore


    【解决方案1】:

    doc() 不带参数会创建一个带有随机 ID 的 DocumentReference。如果您想知道该 ID,它会立即在该对象的 id 属性中可用。您无需编写任何内容即可立即访问它。

    var ref = _userRef.doc(_user.uid).collection(collName).doc();
    print(ref.id);
    

    ID 在客户端应用程序中生成,这就是它立即可用的原因。在您对该引用调用 set() 之前,该文档实际上不会存在。

    ref.set(...);  // after success, the document will exist
    

    【讨论】:

    • 谢谢,但我想知道的是如何在设置后获取新创建的文档。同时我所做的是在集合之前加载一个数组,然后我在集合之后加载了第二个数组,所以现在之前应该与之后具有相同的列表,除了之后数组将比另一个多1个元素,那 1 个元素是我新创建的文档。我得到了它的工作....
    • 您将不得不get() 通常使用相同的参考文档。没有捷径可走。 set() 不会返回文档的新内容。
    【解决方案2】:

    您可以使用 add 方法将新文档添加到您的集合中。

    Firestore.instance.collection(collName).add({
          'item_name': name,
          'item_description': description,
          'item_location':
              GeoPoint(_locationData.latitude, _locationData.longitude),
          'item_date': DateTime.now(),
          'item_images': imageMap,
        });
    

    然后你可以看到你添加到你的集合中的文档,并通过这种方式获取它的 id。

    【讨论】:

    • 如何查看我添加的文档?假设我有 30 个文档。我去添加另一个,我如何告诉我的程序去获取那个特定的新创建的文档?
    猜你喜欢
    • 2021-07-20
    • 2019-05-05
    • 2022-07-22
    • 1970-01-01
    • 2020-12-05
    • 2021-06-17
    • 2021-01-28
    • 2021-12-16
    • 1970-01-01
    相关资源
    最近更新 更多