带时间表的云功能

时间:2019-11-12 17:40:09

标签: javascript firebase google-cloud-functions

我正在尝试通过添加时间表以更改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会向我返回此错误。

  • 函数返回了未定义的预期承诺或值

1 个答案:

答案 0 :(得分:2)

您无法执行的操作。您不能在另一个函数声明中声明和导出函数。如果您希望按计划运行某项内容,则必须在文件的顶层声明并导出它。

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