我正在尝试向订阅主题的用户发送云消息。问题是我现在在updateRecord上遇到无限循环。我正在尝试将其插入if(newData.count == prevData.count) return null;
,但这是行不通的。我认为正在发生的事情是我正在更新Firestore文档中的记录,然后再次调用update函数导致循环。
exports.updateRecord = functions.firestore.document("records/{recordsID}").onUpdate((change, context) => {
const newData = change.after.data();
const prevData = change.before.data();
if(newData.count == prevData.count) return null;
let newCount = prevData.count + 1;
const doc = admin.firestore().doc(`/records/{recordsID}`);
doc.set({ count: newCount })
// TODO: - Requires testing
var topic = "global";
const payload = {
data: {
count: `${newCount}`,
firebaseId: `${newData.firebaseId}`,
type: "updateRecord",
}
};
return admin.messaging().sendToTopic(topic, payload)
.then((response) => {
console.log('Message sent successfully');
})
.catch((error) => {
console.log('Error sending message:', error);
});
});
答案 0 :(得分:1)
第if(newData.count == prevData.count) return null;
行不起作用,因为您的代码总是 每次调用函数时都以递增计数 来更新文档。
从您的问题尚不清楚该记录中的计数应该是什么,或者为什么甚至根本不需要更新文档。您还忽略了更新中的承诺,这是另一个问题。您可能需要仔细考虑您要在此处解决的问题,并仔细解释为什么要执行此代码中的操作。