Firestore云功能无限循环

时间:2019-07-04 14:58:00

标签: node.js google-cloud-firestore google-cloud-functions

我正在尝试向订阅主题的用户发送云消息。问题是我现在在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);
    });

});

1 个答案:

答案 0 :(得分:1)

if(newData.count == prevData.count) return null;行不起作用,因为您的代码总是 每次调用函数时都以递增计数 来更新文档。

从您的问题尚不清楚该记录中的计数应该是什么,或者为什么甚至根本不需要更新文档。您还忽略了更新中的承诺,这是另一个问题。您可能需要仔细考虑您要在此处解决的问题,并仔细解释为什么要执行此代码中的操作。