【发布时间】:2018-04-03 05:06:21
【问题描述】:
我需要让这段代码工作:
router.post('/checkProduct',function(req,res) {
ref.child("recipts").once("value",function(usersSnap) {
var purchasedval = "";
usersSnap.forEach(function (reciptsSnap) { //for every user
if(reciptsSnap.key === req.body.userId) {
reciptsSnap.forEach(function (reciptSnap) {
reciptSnap.ref.child("latest_receipt_info").once("value",function(b) {
purchasedval = "false";
b.forEach(function (c) {
if(c.val().product_id === req.body.productId && reciptSnap.val().status === "on") {
purchasedval = "true";
}
});
});
});
}
});
return res.send({ "alreadyPurchased" : purchasedval })
});
});
if 部分实际上已经完成,但它返回“”。如果我在 if 中返回,它会说关于设置多次标题的问题,所以这就是为什么我创建一个像 purchaseval 这样的变量,但我不知道在 forEachs 完成后如何设置它。有什么想法吗?
【问题讨论】:
-
你确定
if块语句运行一次吗? -
if可以多次进入,进入需要返回true
-
您只需致电
res.send一次即可获得request。你想要这个吗? -
我知道它可以只被调用一次......我需要如果它进入 IF 即使只有一次返回 true......如果代码从未进入 if 返回 false......任何想法@saeid?
-
您可以通过返回
true来突破Firebase Snapshot'sforEach,但这对您没有帮助,除非您重组代码,因为您在内部对once进行异步调用循环 - 这就是为什么purchasedval是""。
标签: javascript node.js firebase-realtime-database