我正在将数据插入数组但是当我插入数据时,它会覆盖整个数组,这里是我更新数组的路由器
router.put('/editbloodbankarray', function(req, res) {
var editUser = req.body._id;
var newName = req.body.bloodbank_array;
User.findOne({ _id: editUser }, function(err, user) {
if (err) throw err;
user.bloodbank_array = newName;
// Save changes
user.save(function(err) {
if (err) {
res.json({ success: false, message: 'error' });
} else {
res.json({ success: true, message: 'Name has been updated!' });
}
});
});
});
样本文件:
_id:5c8521c377df3158d0555db1,
bloodbank_array:
[
0:"1"
1:"2"
]
当我更新/插入新项目时,例如:3 ..数组转到:
_id:5c8521c377df3158d0555db1,
bloodbank_array:
[
0:"3"
]
您可以使用$ push运算符直接执行它(查看here以获取更多信息),但由于您已经先查找文档,因此您可以执行user.bloodbank_array.concat(newName);
而不是像使用user.bloodbank_array = newName
那样为数组赋值。 concat-function是一个标准的JS函数,它在数组的末尾插入一个新项。有关更多信息,您可以阅读mozilla article。
您正在覆盖现有阵列。以下是该行
user.bloodbank_array = newName;
而是在newName array
上做一个for循环并推送user.bloodbank_array
中的项目
for(int i=0;i<newName.length;i++)
{
user.bloodbank_array.push(newName[i]);
}