Node.js 如何更新mongoose模型嵌套数组中的数字
有人能解释一下我做错了什么吗。我试图通过添加两个数字来更新mongoose模式中嵌套数组中的数值 这是有问题的部分Node.js 如何更新mongoose模型嵌套数组中的数字,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,有人能解释一下我做错了什么吗。我试图通过添加两个数字来更新mongoose模式中嵌套数组中的数值 这是有问题的部分 $set: { "shareHolders.$.shares": Number(req.existingStock) + Number(req.stock) } req.existing shares为100,req.stock为字符串格式,但等于100,因此简言之,共享的新值应为200 但当我运行代码时,上述股东的股份不会发生变化,而是保持原值 下面是完整的片段
$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');
}
})
};
在执行
更新之前,请先转换为数字
const updatedStock = Number(req.existingStock) + Number(req.stock)
然后
$set: {
"shareHolders.$.shares": updatedStock
}