Node.js 从Firebase Cloud实时调用多个寄存器';同时';

Node.js 从Firebase Cloud实时调用多个寄存器';同时';,node.js,firebase,firebase-realtime-database,google-cloud-functions,Node.js,Firebase,Firebase Realtime Database,Google Cloud Functions,我试图在实时数据库中编写“邀请”时向用户发送一些推送 当云功能检测到邀请的创建被触发,并将用户列表恢复为已邀请(id) 一旦我得到了这个id,我必须恢复每个id的用户信息,以便获得一些信息,如语言、fcmTokens等 通过阅读一些问题,我发现我必须创建一个对“呼叫”的引用,如: 然后将其存储在数组中,并使用Promise.all()调用 var userpromissions=[]; 对于(var i=0;i{ ... }) 这就是我需要帮助的地方 我遇到了一些问题,因为如果Promise.

我试图在实时数据库中编写“邀请”时向用户发送一些推送

当云功能检测到邀请的创建被触发,并将用户列表恢复为已邀请(id)

一旦我得到了这个id,我必须恢复每个id的用户信息,以便获得一些信息,如语言、fcmTokens等

通过阅读一些问题,我发现我必须创建一个对“呼叫”的引用,如:

然后将其存储在数组中,并使用Promise.all()调用

var userpromissions=[];
对于(var i=0;i{
...
})
这就是我需要帮助的地方

我遇到了一些问题,因为如果Promise.all()检索某个用户失败,它将停止,并且不读取其他id

有一种方法可以“一个接一个”避免承诺。all()停止?

你可以找到一个已经回答过的类似问题。总之,他们说您可以使用异步函数(如果可能的话)。另一种方法是使用循环

function runSerial(tasks) {
    var result = Promise.resolve();
    tasks.forEach(task => {
      result = result.then(() => task());
    });
    return result;
}

值得一看。

您想对您阅读的文档执行哪些操作?修改它们?您期望出现哪种错误?
var userPromises = [];
for (var i = 0;i<usersInRange.length; i++) {
     var userId = usersInRange[i];
     userPromises[i] = admin.database().ref(`/user/${userId}`).once('value');
}
Promise.all(userPromises).then(results => {
...
})
function runSerial(tasks) {
    var result = Promise.resolve();
    tasks.forEach(task => {
      result = result.then(() => task());
    });
    return result;
}