【问题标题】:How to fetch by id from Firestore?如何通过 id 从 Firestore 获取?
【发布时间】:2020-04-18 07:43:34
【问题描述】:

我已经努力了几个小时,但对于这么简单的事情似乎太难了。我需要通过 id 从 Firebase 获取,这是我正在使用但不起作用的代码:

fetch_selected_restaurant = () => {  
    var ref = firebase.firestore().collection('restaurants').where("res_id", "==", "5").get();  
}

【问题讨论】:

  • 您使用的语法是用于查询 Cloud Firestore,但您使用实时数据库进行了标记。虽然这两个数据库都是 Firebase 的一部分,但它们是完全独立的并且不共享 API。您希望使用哪个数据库?
  • @FrankvanPuffelen 啊抱歉,我实际上使用的是 Cloud Firestore
  • 好的。我更新了你的问题和标签。您也可以通过单击问题下方显示的小edit 链接来自己执行此操作。接下来:您共享的代码不起作用怎么办?请注意,通常最好在代码中包含一些 console.log(...) 语句。这样您就可以展示他们打印的内容以及您希望他们打印的内容。
  • @FrankvanPuffelen 问题是它根本没有打印任何东西。你有解决办法吗?
  • 如果您共享的代码就是您所拥有的,那么您就不会处理从get() 获得的查询快照。我强烈建议在此处查看有关从集合中获取文档的文档:firebase.google.com/docs/firestore/query-data/…

标签: node.js firebase react-native google-cloud-firestore


【解决方案1】:

请记住,读取 firestore/firebase 数据库是一个异步操作。

如果你想通过 id 读取文档,你必须这样称呼它:

 var ref = firebase.firestore().collection('restaurants').doc(yourDocId).get()

如果你还记得,上面几行我提到几乎所有使用firestore的操作都是异步,读取文档也不例外。在您调用 get() 后,它会返回 Promise。我看到您将此承诺存储在 ref 变量中,这很好。

现在为了得到结果,你必须向这个 Promise 索取结果。在这一步你可以得到你想要的:

ref.then(function(doc) {
    if (doc.exists) {
        console.log("Document data:", doc.data());
    } else {
        // doc.data() will be undefined in this case
        console.log("No such document!");
    }
}).catch(function(error) {
    console.log("Error getting document:", error);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-11
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    相关资源
    最近更新 更多