有人可以解释一下我做错了什么。我试图通过添加两个数字
来更新我的mongoose模式中嵌套数组中的数字值这是有问题的部分
$set: {
"shareHolders.$.shares": Number(req.existingStock) + Number(req.stock)
}
req.existing shares是100,req.stock是格式化为字符串,但等于100,所以,简而言之,股票的新值应该是200
但是当我运行代码时,所述股东的股票不会改变它仍然是原始价值。
这是完整的代码段
module.exports.updateShareHolder = function(req, callback) {
console.log('updateShareHolder');
console.log(req);
console.log(req.existingStock + Number(req.stock));
Company.update({
"_id": req.companyID,
"shareHolders.userId": req.userID
}, {
$push: {
"shareHolders.$.agreements": {
agreementID: req.agreementID
}
}
}, {
$set: {
"shareHolders.$.shares": Number(req.existingStock) + Number(req.stock)
}
}, function(err) {
if (err) {
console.log(err);
callback(err, err);
} else {
console.log('updateShareHolder');
callback(null, 'success');
}
})
};
答案 0 :(得分:1)
在执行update
之前转换为数字。
const updatedStock = Number(req.existingStock) + Number(req.stock)
然后
$set: {
"shareHolders.$.shares": updatedStock
}