【问题标题】:How do I return the results from a query in Firestore?如何从 Firestore 中的查询返回结果?
【发布时间】:2019-11-11 16:57:36
【问题描述】:

我正在尝试从查询中返回结果。我已经阅读了 100 个问题,但它们都只是向我展示了如何记录结果。我的查询似乎成功了,但我的客户没有收到响应。

export const myFunction = functions.https.onCall((data, context) =>
{
    const collection = getMyCollection();
    let query = collection.orderBy('time', 'desc');
    return query.get().then((snapshot) =>
    {
        return snapshot.docs.map((doc) =>
        {
            console.log("This prints");
            return doc.data();
        });
    }
}

谁能向我解释我做错了什么?

注意:在将其标记为重复之前,请注意,没有任何类似问题涉及返回结果。

【问题讨论】:

  • "我的查询似乎成功了,但我的客户没有收到响应。"如何将数据发送给客户端?
  • 您在问题中添加了google-cloud-functions 标签。您的代码在哪种云函数中使用?可以分享一下这个函数的完整代码吗?
  • 你的函数是什么样的? onCallonRequest?
  • 我认为 Google Cloud Functions/Firestore 与 Firebase Functions/Firestore 相同。我猜他们不是。我更新了代码,但无法创建新的 firebase 标记。

标签: node.js typescript firebase google-cloud-firestore google-cloud-functions


【解决方案1】:
export const myFunction = functions.https.onCall((data, context) =>
{
    const collection = getMyCollection();
    let query = collection.orderBy('time', 'desc');
    return query.get().then((snapshot) =>
    {
        return snapshot.docs.map(doc => doc.data());
    }
}

https://www.reddit.com/r/Firebase/comments/75s7p2/get_all_documents_to_get_array_of_usable_data/do8x99f?utm_source=share&utm_medium=web2x

【讨论】:

    【解决方案2】:

    返回一个querySnaphotThe documentation 显示:

    var museums = db.collectionGroup('landmarks').where('type', '==', 'museum');
    museums.get().then(function (querySnapshot) {
        querySnapshot.forEach(function (doc) {
            console.log(doc.id, ' => ', doc.data());
        });
    });test.firestore.js
    

    【讨论】:

    • 这很有趣,我不知道有collectionGroup()?
    • 感谢您的回答,但我问的是返回数据,而不是记录数据。
    • 所以,添加一个return .get (return museums.get()...。无论如何,querySnapshot 被作为一个数组访问。
    猜你喜欢
    • 2020-03-21
    • 2018-05-10
    • 2022-01-14
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多