获取Firestore触发器-Cloud函数前后的文档数



我试图在使用cloud functions添加文档之前和之后获取集合中的文档数量,我在nodeJs中编写的代码是:

exports.onShowcaseCreated = functions.firestore
.document("Show/{document}")
.onCreate((snapshot, context) => {
const showcaseDict = snapshot.data();
const uid = showcaseDict.uid;
return db.collection("Showcases").where("uid", "==", uid).get()
.then((showsnap) => {
const numberOfShowcaseBefore = showsnap.size.before;
const numberOfShowcaseAfter = showsnap.size.after;
console.log( numberOfShowcaseBefore, numberOfShowcaseAfter);
if ( numberOfShowcaseBefore == 0 && numberOfShowcaseAfter == 1 ) {
return db.collection("Users").doc(uid).update({
timestamp: admin.firestore.Timestamp.now(),
});
});
});
});

但是控制台日志是undefined undefined,这似乎不是在添加之前和之后获取文档数量的正确方法

beforeafter属性仅在传递给onCreate的参数上定义。您在代码中调用该snapshot,但它实际上是此处定义的Change对象。

从数据库中读取数据会得到此处定义的QuerySnapshot对象。正如您所看到的,QuerySnapshot上的size只是一个数字,不具有beforeafter属性。

因此,在您的方法触发事件之前,无法确定大小。您在代码中运行的任何查询都会在事件被触发后运行,因此会给您当时的大小。


要实现此用例,我建议在数据库中存储相关文档的数量,然后在文档发生更改时触发云函数。在Cloud Function代码中,您可以从传入的change文档中读取以前和新的大小值。

相关内容

  • 没有找到相关文章

最新更新