这很奇怪。当我最初使用Firebase模拟器启动时:从下面的云功能开始,对其中一个用户文档进行更改,即可按预期工作。
exports.createPayment = functions.firestore.document('users/{userId}')
.onUpdate(async (snap, context) => {
const newValues = snap.after.data();
console.log(newValues);
console.log(context);
const previousValues = snap.before.data();
console.log(previousValues);
});
现在这是奇怪的地方。当我将从('users / {userId}')指定的文档更新为基本上所有内容时。它仍然只收听('users / {userId}'),所以我现在处于这样的状态
exports.createPayment = functions.firestore.document('')
.onUpdate(async (snap, context) => {
...
});
当我为用户更改内容时,这仍然触发onUpdate。现在,我的第一个想法很好,该功能没有刷新,但在这里它变得更加奇怪。当我在方括号之间添加一些内容时,它确实刷新了路径,但仍然没有刷新路径,因此现在我的函数如下所示:
exports.createPayment = functions.firestore.document('')
.onUpdate(async (snap, context) => {
const newValues = snap.after.data();
console.log('this has just been added');
console.log(newValues);
console.log(context);
const previousValues = snap.before.data();
console.log(previousValues);
});
它仍然侦听用户/ {userId}路径,即使我将其保留为空(或者在其他测试中只是在其中放置一些乱码),但是当我更新数据库中的内容时,它现在也可以进行console.log'刚刚被添加”。这到底是怎么回事?似乎指定的路径没有更新,但功能正在更新。为什么会这样?