使用GCF/pubsub更新Firestore文档中的计数器



我有一些客户在PubSub上发布消息,收到的每条消息都会由GCF触发,从而编辑我的firestore中的文档。该文档包含一个id、一个房间的名称以及该房间内的当前人数。GCF会增加当前数字。

但我认为,如果同一个房间同时有两条消息,gcf就不会做正确的工作,我的文档上也不会有最后的+2?

基本上,GCF获取文档,并增加当前编号。

我该如何处理同一房间同时收到的多条消息?

使用FieldValue.increment()可以确保字段正确递增。正如这篇Firebase博客文章中所解释的;对于FieldValue.increment(),数据库将立即基于它所具有的任何值进行改变";。

在Firebase的云功能中,执行以下操作:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const FieldValue = require('firebase-admin').firestore.FieldValue;

exports.scheduledFunction = functions.pubsub.schedule('...').onRun(async (context) => {
// ...
await admin.firestore().collection("...").doc("...").update({ nbrOfPeople: FieldValue.increment(1) });
// ...
return null;
});

相关内容

  • 没有找到相关文章

最新更新