gpt4 book ai didi

javascript - promise 内的 forEach 循环内的 promise ,糟糕的 firebase 数据库设计?

转载 作者:行者123 更新时间:2023-11-30 14:46:04 25 4
gpt4 key购买 nike

我用 Firebase 构建了一个购物车,当用户支付了一个函数触发器并且我从购物车中获取了所有商品然后我创建了产品 ID (pids) 数组,之后我想搜索商店 ID每个项目通知他们。

商店 ID 是产品节点中的子节点。产品->{pid}->sid

这就是我在获取 pids 后的做法

.then(snap => {
return pids.forEach( pids => {
productIdRef = root.child(`/products/${pids}`);
//Here I should create a promise to get the Stores Ids:
// productIdRef.once("value")....
});

这是嵌套的 promise ,据我所知这并不好。

那么我可以做些什么来避免嵌套 promise ,还是由于 Firebase 数据库设计不当而从一开始就注定要失败?

更新:完整功能:

    var itemsRef = NOTIFICATION_SNAPSHOT.adminRef.parent.child('items');
var pids = [];
return itemsRef.once('value').then(snapshot => {
return snapshot.forEach((childSnapshot) => {
pids.push(childSnapshot.key);
});

}).then(snap => {
return pids.forEach(pids => {
productIdRef= root.child(`/products/${pids}`).once('value');

});

}).catch(error => {
// Something went wrong.
console.error(error);
});

最佳答案

我不知道你所说的嵌套是什么意思

也许像下面这样使用 Promise.all:

.then(snap => {
return Promise.all(pids.map(pid => {
return root.child(`/products/${pid}`);
}));
}).then((storeIds) => {
// result of root.child()
});

关于javascript - promise 内的 forEach 循环内的 promise ,糟糕的 firebase 数据库设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48916528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com