【发布时间】:2019-03-04 09:55:27
【问题描述】:
我的 firebase 应用具有以下功能。
但每次我部署它时,我都会收到以下消息:
142:12 警告避免嵌套承诺 promise/no-nesting
✖ 1 个问题(0 个错误,1 个警告)
exports.cronTravas = functions.database.ref('acoes').onUpdate((change, context) => {
const acoes = change.after.val();
var acoesNovas = [];
var travas = {}
for (var key in acoes) {
var item = {
'key': key,
'ult': acoes[key].ult
}
acoesNovas[key.substring(0, 4)] = item;
}
return admin.database().ref().child('opcoesNew').orderByChild('strike').once('value')
.then((snap) => {
const opcoes = snap.val();
travas['travasAlta'] = {}
for (var data in opcoes) {
travas['travasAlta'][data] = {}
for (var ativo in opcoes[data]) {
travas['travasAlta'][data][ativo] = {}
var i = 0;
for (var opcao in opcoes[data][ativo]) {
i++;
travas['travasAlta'][data][ativo] = calculaTravas(opcoes[data][ativo], acoesNovas[ativo].ult);
}
}
}
return travas;
})
.then(travas => {
return admin.database().ref().update(travas).catch((error) => {
return console.error(error);
});
})
});
也就是说,我怎样才能删除这个警告?
而且,如果重要的话,这个函数会在几分钟内消耗大量配额来生成这条消息:
错误:超出配额(函数调用中的 CPU 分配:每 天,函数调用中的 CPU 分配:每天);增加 配额,在您的项目中启用计费在 xxxxxxx。函数不能 执行。
有没有办法优化它,以便我可以使用这个免费配额而不会浪费它? (我知道我可以升级,但我现在真的在尝试免费计划)。
我的数据库如下所示:
acoes (8)
opcoes
-datas(4)
--acao(8)
---opcao(160)
所以,在我的“opcoes”节点内,我有 4 个“数据”节点,每个节点都有 8 个“acao”节点,每个节点都有“160”个 opcao 节点。所以我至少有 5k 个节点,每次更新“acoes”节点(每分钟 1 次)时,我都必须遍历所有节点。关于如何改进它的任何想法?
【问题讨论】:
标签: node.js firebase firebase-realtime-database google-cloud-functions