Javascript 如何从发布子函数更新Firestore字段

Javascript 如何从发布子函数更新Firestore字段,javascript,google-cloud-firestore,google-cloud-pubsub,Javascript,Google Cloud Firestore,Google Cloud Pubsub,我已经设置了一个每分钟触发一次的pub/sub函数,我想检查当前时间是否等于任何Firestore实体的开始时间,然后更改一个值,如果它是: exports.updateDraftStatus = (event, context) => { const pubsubMessage = event.data; console.log(Buffer.from(pubsubMessage, 'base64').toString()); const db = admin.firest

我已经设置了一个每分钟触发一次的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'})));
};
返回一个
承诺
,而不是
查询快照
。您需要等待快照,或者使用
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'})));
};


谢谢Frank,我将尝试此解决方案,我已将其更改为您的建议,但现在我收到一个错误,即未定义admin。我已在json包中的dependances下添加了admin,但仍然未定义任何建议?这听起来像是另一个问题,与如何将
admin
包导入
index.js
相关。它应该看起来像
const admin=require('firebase-admin')
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'})));
  })
};