我正在尝试通过添加时间表来更改Firebase内节点的状态来实现云功能,即将{active:true}更改为{active:false}

const admin = require('firebase-admin');
admin.initializeApp();
const db = admin.firestore();

exports.createPrd = functions.firestore.document('products/{itemId}').onCreate((ev) => {
    db.collection('products').doc(ev.id).get().then( doc => {
        var dia = doc.data().limitDay;
        var mes = doc.data().limitMonth;
        var hora = doc.data().limitHour;
        exports.schedulerFun = functions.pubsub.schedule(dia+" "+mes+" "+hora).onRun((context) => {
            console.log('Se acabo la buena onda', doc.data().productName)
            db.collection('products').doc(ev.id).update({
                activo: false
            })
        })
        return 0;
    }).catch(err => {console.log(err)});

});


这是我考虑过的代码,该代码传递了我从firebase那里获取的参数以激活计划,但是在通过onCreate激活函数时,firebase会向我返回此错误。


返回的函数未定义,预期的承诺或价值

最佳答案

您尝试做的事是不可能的。您不能在另一个函数声明中声明和导出函数。如果要按计划运行某些内容,则必须在文件的顶层声明并导出它。

相反,您可以做的是让您的函数按计划运行,但是查询Firestore以查看其在每次调用时应如何运行。

关于javascript - 带时间表的云功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58823930/

10-09 18:08