簡體   English   中英

如何從 pub sub 函數更新 Firestore 字段

[英]How to update a Firestore field from a pub sub function

我已經設置了一個 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()方法返回一個Promise<QuerySnapshot> ,而不是一個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'})));
  })
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM