在云功能中的HTTPS触发器中使用Cloud Firestore时出现500内部服务器错误

时间:2017-12-08 17:13:37

标签: firebase google-cloud-functions google-cloud-firestore

我正在尝试将一段数据发布到我的Cloud Firestore中的某个位置。 Cloud Function本身通过HTTPS切换。对于request.body我正在使用bodyParser.json方法。

notifull.post('/postNote', (request, response) => {

    // grab variables and files from body and query strings
    var subject = request.body.subject;
    var category = request.body.category;
    var subcategory = request.body.subcategory;

    var title = request.body.title;
    var id = request.body.id;
    var userID = request.body.userID;

    // add data to collection
    var referenceString = `${subject}/${category}/${subcategory}/${id}`;

    var reference = admin.firestore().doc(referenceString);

    reference.set({
        "title": title,
        "id": id,
        "userID": userID,
        "timestamp": Date.now(),
        "upvotes": 0
    });


    // update user posts???

});

我希望在参考文献中有一个小文档。

相反,返回的是500内部服务器错误。

日志中的错误是“TypeError:admin.firestore不是函数”。我正在使用firebase-admin版本4.2.1。

1 个答案:

答案 0 :(得分:1)

您正在使用旧版本的firebase-admin。直到最近才添加Firestore支持。安装最新版本:

npm install firebase-admin@latest

此外,每个HTTPS函数都应该为每个可能的代码路径返回客户端的响应,并且只有在函数中完成所有工作后才会返回。

reference.set({
    "title": title,
    "id": id,
    "userID": userID,
    "timestamp": Date.now(),
    "upvotes": 0
})
.then(() => {
    response.send("OK")
})
.catch(error => {
    response.status(500).send(error)
})