Javascript 如何创建从Firebase读取数据然后在twilio上发送消息的计划函数

Javascript 如何创建从Firebase读取数据然后在twilio上发送消息的计划函数,javascript,firebase,google-cloud-functions,twilio,Javascript,Firebase,Google Cloud Functions,Twilio,我正在尝试从数据库中读取数据,然后通过Twilio发送消息。 我希望这个函数能做的是每分钟检查一次数据库。它将检查玩家集合中的所有文档。如果其中一个文档中的sessions字段等于0,则会创建一条消息并将其发送到同一文档中的电话号码 这是我目前的代码: const account = '***********************************'; const auth = '********************************'; const client = requ

我正在尝试从数据库中读取数据,然后通过Twilio发送消息。 我希望这个函数能做的是每分钟检查一次数据库。它将检查玩家集合中的所有文档。如果其中一个文档中的sessions字段等于0,则会创建一条消息并将其发送到同一文档中的电话号码

这是我目前的代码:

const account = '***********************************';
const auth = '********************************';
const client = require('twilio')(account,auth);
const firebaseFunc = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const database = admin.firestore()

exports.paymentChecker = firebaseFunc.pubsub.schedule('* * * * *').onRun((context) => {
    database.collection('Players').get()
    .then(querySnapshot => {
        querySnapshot.forEach(doc => {
            if(doc.data().sessions, '==', 0){
                client.messages.create({
                    to: doc.data().phone,
                    from: '+***********',
                    body: 'Hi' + doc.data().First + ', you have to renew your registration',
                })
            }
        })
    }).catch()
})
但是,此代码没有部署到firebase,因为它会产生许多错误

19:5   error  Expected catch() or return                  promise/catch-or-return
  20:11  error  Each then() should return a value or throw  promise/always-return
  22:16  error  Unexpected constant condition               no-constant-condition
如何解决这个问题?
谢谢

问题来自这样一个事实:您没有返回异步方法(
get()
client.messages.create()
)返回的承诺。有关它的重要性以及它生成的代码错误的更多详细信息,请参阅

因此,以下几点应该可以做到(未经测试):



还要注意,
if(doc.data().sessions,'=',0)
无法工作。与其他错误一样,您可以通过注意相应错误行开头提到的行号来检测到它:
22:16错误意外常量条件no constant condition
)。

通过查看您共享的错误,它似乎与承诺返回有关。承诺只是一项可能尚未完成的任务。你可以查看这篇博客文章[1],它用例子解释了承诺。我希望这将有助于解决这个问题


[1]

我建议在谷歌上搜索每一个错误,了解它们的含义。一旦你理解了他们的意思,你就可以采取措施纠正任何可能的错误。@kerimErkan嗨,你有时间看一下建议的答案吗?谢谢
exports.paymentChecker = firebaseFunc.pubsub.schedule('* * * * *').onRun((context) => {
    return database.collection('Players').get()
        .then(querySnapshot => {
            const promises = [];
            querySnapshot.forEach(doc => {
                if (doc.data().sessions == 0) {
                    promises.push(
                        client.messages.create({
                            to: doc.data().phone,
                            from: '+***********',
                            body: 'Hi' + doc.data().First + ', you have to renew your registration',
                        })
                    );
                }
            })
            return Promise.all(promises);
        }).catch(error => {
            console.log(error);
            return null;
        })
});