javascript - 在 firebase 函数上运行时我得到一个空数组,但在手机上的 react native expo 上运行时得到一个带有值的数组
问题描述
我在下面有这个代码,我作为 firebase 函数上传。每当我使用firebase functions:log检查日志时,我都可以看到 expoTokens 数组为空。
var expoTokens = [];
db.collection('members').get()
.then(docs => {
var data = []
docs.forEach(doc => {
if (recipients.includes(doc.id)) {
doc.data().expoTokens.forEach(token => {
if (!data.includes(token)) data.push(token);
})
}
})
return Promise.all(data);
})
.then((data) => {
expoTokens = data;
})
console.log("expoTokens");
console.log(expoTokens);
我只需要获取一个 ExpoTokens 数组,以便发送通知。
解决方案
我建议使用它asyc/await
来使代码流更加清晰。你的函数可以这样写:
var expoTokens = [];
const docs = await db.collection("members").get();
var data = [];
docs.forEach((doc) => {
if (recipients.includes(doc.id)) {
doc.data().expoTokens.forEach((token) => {
if (!data.includes(token)) expoTokens.push(token);
});
}
});
console.log("expoTokens");
console.log(expoTokens);
// TO DO
// Send notifications using expoTokens using await
// We return to let the cloud function know that we are done
return;
只是不要忘记async
你的功能async (snap, context) => {}
推荐阅读
- netlogo - 无法运行 Netlogo 代码 - 要求海龟环顾四周并选择最低的补丁变量
- r - 带有 InsertUI 的闪亮模态对话框
- python - 使用函数的名称和使用 python 的 NLP 获取函数的返回类型
- javascript - window.scrollTo 方法被触发后是否有事件处理?
- python - 为复杂方程的部分着色
- php - PHP 中的 AST 重写是否存储在 opcache 中?
- ansible - Ansible 主机可访问性不应决定整体剧本的成功
- python - PaddleOCR 错误 OSError: [WinError 126] 找不到指定的模块
- ios - 如何将目标添加到 NSAttributedString
- facebook - 无法访问 Facebook 开发者帐户