【发布时间】:2020-03-27 06:12:42
【问题描述】:
我正在尝试每 2 分钟更新一次子集合中的字段。如果时间戳早于 3 分钟,我将字段“状态”更改为“关闭”。我有这段代码,有人帮助我,它适用于集合,但我不知道使用什么集合路径来访问其中包含此子集合的所有文档。
5 分钟后,如果时间戳超过 3 分钟,我希望“状态”字段为“关闭”。
const snap = await db.collection("MX") 有效,但仅适用于 1 层深。 userProfiles 中的每个文档都有一个 MX 的子集合。
我尝试了通配符和几种不同的收集路径。
exports.updateIdle = functions.pubsub.schedule('every 2 minutes').onRun(async () => {
const db = admin.firestore();
// this is what line I am trying to figure out
const snap = await db.collection("userProfiles")
.where("Status", "=", "On")
.where("Timestamp", "<", admin.firestore.Timestamp.fromMillis(Date.now() - 3 * 60000))
.get();
await Promise.all(snap.docs.map(doc => doc.ref.update({Status: 'Off'})));
console.log('this goes off every two minutes')
});
编辑: userProfile -> 每个文档 -> 4 个子集合(MX、员工、设置、日志)
我在 MX 中存储了文档。这些文档将具有状态和时间戳。
我希望这个 pub/sub 检查存储在 MX 子集合中的所有文档。
如果时间戳是 3-5 分钟,并且状态 = 开启。我想将状态更改为关闭
所以我正在检查所有 MX 子集合。在这种情况下,userProfiles 中有 4 个文档,每个文档中都有一个 MX 子集合。
我感谢任何和所有的帮助。我希望我能很好地解释这一点。谢谢。
【问题讨论】:
-
您是否确认,换句话说,您正在寻找一种解决方案来查找具有
MX子集合的MX集合的文档 -
是的。 userProfiles 中的所有文档都有一个我想访问的 MX 子集合。
-
而且您知道这些文档确实有一个 MX 集合。您的问题是如何访问此 MX 集合的文档?
-
另外,
userProfile的MX子集合中是否有您要更新的特定文档?或者您想更新此userProfile/MX子集合的所有文档? -
是的。我希望这个 pub/sub 查看“MX”中的所有文档,如果“时间戳”超过 3 分钟,我想将“状态”更改为“关闭”
标签: javascript firebase google-cloud-firestore google-cloud-functions google-cloud-pubsub