javascript Firebase Cloud函数未更新Firestore数据库中的数据

ctrmrzij  于 2022-12-21  发布在  Java
关注(0)|答案(1)|浏览(138)

所以我编写了一个计划的云函数,它应该每分钟运行一次,并更新Firestore数据库中的某些值。我在这个函数上取得了成功,我没有看到任何错误,但是数据库没有更新。我的项目是用flutter做的,但是我用node.js编写了云函数
enter image description here
这是我的云函数代码。

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp(functions.config().firebase);

exports.myScheduledCloudFunction = functions.pubsub.schedule('* * * * *').timeZone('Asia/Kuala_Lumpur').onRun(async (context) => {
   
    admin.firestore().collection('users').get().then(function(querySnapshot) {
        querySnapshot.forEach(function(doc) {
            admin.firestore().collection('users').doc(doc.id).collection('habits').get().then(function(querySnapshot) {
                querySnapshot.forEach(function(habitDoc) {
                    admin.firestore().collection('users').doc(doc.uid).collection('habits').doc(habitDoc.id).ref.update({ 
                        'iscompleted' : false,
                        'completedcount': 0
                    })
                })
            })
        })
    })

    return null;
});

我觉得可能和规则有关,但我不确定,因为我的规则现在是默认的,我没有修改,希望有人能帮忙

qni6mghb

qni6mghb1#

多亏了@Doug史蒂文森,我才知道我没有给异步函数任何时间,我已经修正了我的工作,现在它正在工作。
下面是固定的代码:

exports.myScheduledCloudFunction = functions.pubsub.schedule('* * * * *').timeZone('Asia/Kuala_Lumpur').onRun(async (context) => {
   
    const querySnapshot = await admin.firestore().collection('users').get();
    querySnapshot.forEach(async (doc) => {
        const habitQuerySnapshot = await admin.firestore().collection('users').doc(doc.id).collection('habits').get();
        habitQuerySnapshot.forEach(async (habitDoc) => {
            
            if (doc && doc.ref) {
              
              await habitDoc.ref.update({ 
                'iscompleted' : false,
                'completedcount': 0
              });
            }
        });
    });

    return null;
});

相关问题