javascript - 如何从 pub 子函数更新 Firestore 字段
问题描述
我已经设置了一个 pub/sub 函数来每分钟触发一次,我想检查当前时间是否等于任何 Firestore 实体的开始时间,然后更改一个值,如果是:
exports.updateDraftStatus = (event, context) => {
const pubsubMessage = event.data;
console.log(Buffer.from(pubsubMessage, 'base64').toString());
const db = admin.firestore();
time = admin.firestore.Timestamp.fromMillis(Date.now())
const snap = db.collection("leagues").where("startTime", time).get()
await Promise.all(snap.docs.map(doc => doc.ref.update({Started: 'Off'})));
};
解决方案
该.get()
方法返回 a Promise<QuerySnapshot>
,而不是 a QuerySnapshot
。您将需要await
快照,或使用then()
块。
exports.updateDraftStatus = async (event, context) => {
const pubsubMessage = event.data;
console.log(Buffer.from(pubsubMessage, 'base64').toString());
const db = admin.firestore();
time = admin.firestore.Timestamp.fromMillis(Date.now())
const snap = await db.collection("leagues").where("startTime", time).get()
await Promise.all(snap.docs.map(doc => doc.ref.update({Started: 'Off'})));
};
或者
exports.updateDraftStatus = (event, context) => {
const pubsubMessage = event.data;
console.log(Buffer.from(pubsubMessage, 'base64').toString());
const db = admin.firestore();
time = admin.firestore.Timestamp.fromMillis(Date.now())
return db.collection("leagues").where("startTime", time).get().then((snap) => {
return Promise.all(snap.docs.map(doc => doc.ref.update({Started: 'Off'})));
})
};
推荐阅读
- javascript - 如何在 React Class 组件中获取 RTK Query API 端点状态(isLoading、错误等)?
- ios - 访问 Swift 类的正在运行的实例
- powerbi - 如何显示行小计的最大值?(电源 BI)
- android - 如果在 ViewPager2 中,Listview 中的快速滚动不起作用
- svg - 是否可以替换 HubSpot 代码库中的社交媒体图标?
- python - Python:使用列的最后一个字符将新值填充到现有列
- dart - Flutter signalr_core hub连接测试
- php - guzzlehttp 在 laravel 项目上抛出错误 - strtolower(): Argument #1 ($string) must be of type string, int given
- php - 如何使用 PHP/MYSQL 从我的项目页面在我的项目详细信息页面中显示一项
- openid - Quarkus 从类路径加载第 3 方属性文件