我的Firestore中有2个集合(全局和本地),当我向本地添加文档时,我需要将全局文档中的字段更新1
下面是我拥有的相同代码。我对此很陌生,因此我可能还会出现一些语法错误,如果发现任何错误,请突出显示。
const functions = require("firebase-functions");
const admin = require("firebase-admin");
exports.helloWorld = functions.https.onRequest((request, response) => {
response.send("Hello world");
}); // For testing, even this is not being deployed
exports.updateGlobal = functions.firestore
.document("/local/{id}")
.onCreate((snapshot, context) => {
console.log(snapshot.data());
return admin
.firebase()
.doc("global/{id}")
.update({
total: admin.firestore.FieldValue.increment(1),
});
});
终端显示“加载用户代码时功能失败” 在此之前,它显示了一些类似“管理员未定义”或“无法访问未定义的 firestore ”的内容,我现在无法复制。
这是React应用的一部分,该应用具有通过 firebase npm模块运行的正常firestore 有关该问题的任何其他信息,我都会相应地编辑问题,非常感谢您的帮助。
答案 0 :(得分:2)
除了加载firebase-functions
和firebase-admin
模块之外,您还需要初始化一个admin
应用实例,可以从中进行Cloud Firestore更改,如下所示:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
//...
我在您的CF中看到另一个问题。您需要使用context
对象来获取id
的值。
exports.updateGlobal = functions.firestore
.document("/local/{id}")
.onCreate((snapshot, context) => {
const docId = context.params.id;
return admin
.firebase()
.doc("global/" + docId)
.update({
total: admin.firestore.FieldValue.increment(1),
});
});
您还可以如下使用template literals:
return admin
.firebase()
.doc(`global/${docId}`)
//...