【问题标题】:verifying If an object is present in the session's array验证会话的数组中是否存在对象
【发布时间】:2016-05-18 18:09:25
【问题描述】:

在这里,我将product_detail 推送到一个空数组产品。首先,我正在检查数组是否为空,如果是,则将 json 数据推入数组并使用会话进行更新。如果不是,我想验证是否存在具有 id 的对象,如果是,则不会推送它。但条件并没有成为现实。不知道我错过了什么或者我错误地提出了条件

var product_details = {
    product_id: product._id,
    user_id: user_id,
};
if (product.length !== 0) {
    if (req.session.product.forEach(function(data) {
        (data.product_id == req.params._id)
    })) {
        return res.send("product already present ");
    }
    product.push(product_detail);
    req.session.product = product;
    return res.send(req.session.product);
}
product.push(product_detail);
req.session.product = product;
console.log(req.session);
return res.send(req.session.product);
});

【问题讨论】:

  • forEach 不应该在条件内,它应该是循环内的条件
  • 你没有为你的代码提供足够的背景/解释来正确调试它,但你肯定忘记了你的 else 表达式并且循环条件根本不起作用。
  • @AshBringer 所以我不能将函数作为条件?
  • 可以,但不是这个,它不返回任何东西,因此不能用于条件,它总是为假,因为forEach返回undefined,这是错误的。
  • @ClemensHimmer 谢谢,我明白了为什么我是假的

标签: javascript node.js


【解决方案1】:

只需将嵌套条件更改为:

var arrayTrue = true;

req.session.product.forEach(function(data) {
    if(data.product_id == req.params._id){
        arrayTrue = false;
    }
});

if(arrayTrue){
    // Doesn't exist...
}
else{
    return res.send("Product already present");
}

【讨论】:

    猜你喜欢
    • 2022-11-21
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    相关资源
    最近更新 更多