我的firestore中有两个集合(全局和本地(,当我将文档添加到本地时,我需要将全局文档中的字段更新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),
});
});
终端说";函数在加载用户代码时失败";在此之前,它显示了一些类似于";admin未定义";或";无法访问未定义"的firestore;我现在无法复制。
这是react应用程序的一部分,该应用程序具有通过firebase npm模块运行的正常firestore有关该问题所需的任何其他信息,我将相应地编辑问题,非常感谢您的帮助。
除了加载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),
});
});
您也可以使用如下模板文字:
return admin
.firebase()
.doc(`global/${docId}`)
//...