【发布时间】:2019-11-12 17:40:09
【问题描述】:
我正在尝试通过添加一个计划来更改 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 获取的参数以激活计划,但 firebase 在通过 onCreate 激活函数时返回此错误。
- 函数返回未定义、预期的 Promise 或值
【问题讨论】:
-
Doug 在下面解决了您的核心问题,但请注意,您在这里收到的错误消息是因为您没有在顶层返回承诺(您可能需要注意当你按照道格建议的方式重写时)。你需要做
return db.collection(.....而不仅仅是db.collection(....。阅读有关promises in cloud functions 的更多信息——如果您不这样做,执行环境可能会提前停止您的函数。
标签: javascript firebase google-cloud-functions