【问题标题】:How to create sub collection on document Firebase Function Express?如何在文档 Firebase Function Express 上创建子集合?
【发布时间】:2019-11-26 10:33:14
【问题描述】:

下面的代码 sn-p 是我如何实现在 PostID 的文档下创建likes 的子集合。我收到 404 未找到的错误。我已阅读文档,如果集合下有文档,则可以在其中创建集合。

帖子 -> PostId -> 喜欢

exports.updateLike = function (req, res) {

    const postId = req.params.postId;
    const userId = req.params.userId;

    // return 404 not found 
    db.collection("posts").doc(postId).collection("likes").add({
        uid: userId,
        createAt: Date.now()
    }).catch(err => { 
        console.log("--- Operation Failure ---")
        return res.status(500).json(err);
    });
}; 

这是链接 of image the structure of collection and document of the firebase

更新 我检查了firebase的控制台,它返回了

TypeError: db.collection(...).doc(...).collection(...).set is not a function
    at exports.updateLike (/srv/routes/posts.js:47:60)
    at Layer.handle [as handle_request] (/srv/node_modules/express/lib/router/layer.js:95:5)
    at next (/srv/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/srv/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/srv/node_modules/express/lib/router/layer.js:95:5)
    at /srv/node_modules/express/lib/router/index.js:281:22
    at param (/srv/node_modules/express/lib/router/index.js:354:14)
    at param (/srv/node_modules/express/lib/router/index.js:365:14)
    at param (/srv/node_modules/express/lib/router/index.js:365:14)
    at Function.process_params (/srv/node_modules/express/lib/router/index.js:410:3)

这是当前代码。前面的代码也返回了如上的错误。

exports.updateLike = function (req, res) {

    const postId = req.params.postId;
    const userId = req.params.userId;

    db.collection("posts").doc(postId).collection("likes").set({
        uid: userId,
        createAt: Date.now()
    }).then(post => {
        console.log("--- Operation Success ---")
        return res.status(200).json(post.data());
    }).catch(err => { 
        console.log("--- Operation Failure ---")
        return res.status(500).json(err);
    });
}; 

【问题讨论】:

    标签: node.js firebase express google-cloud-firestore


    【解决方案1】:

    你应该写db.collection("posts").doc(postId).collection("likes").doc().set({ ... })而不是db.collection("posts").doc(postId).collection("likes").add({ ... })

    【讨论】:

    • 我在 firebase 控制台收到错误,指出这不是函数。我已经用错误更新了帖子。
    • 感谢已修复错误。我忽略并忘记在集合后面放一个文档
    猜你喜欢
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2020-09-17
    • 2021-12-13
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    相关资源
    最近更新 更多