Node.js 在数组mongodb中添加另一项

Node.js 在数组mongodb中添加另一项,node.js,mongodb,mean-stack,Node.js,Mongodb,Mean Stack,我正在向数组中插入数据,但当我插入数据时,它会覆盖整个数组,这是我更新数组的路由器 router.put('/editbloodbankarray', function(req, res) { var editUser = req.body._id; var newName = req.body.bloodbank_array; User.findOne({ _id: editUser }, function(err, user) {

我正在向数组中插入数据,但当我插入数据时,它会覆盖整个数组,这是我更新数组的路由器

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"
]

您正在覆盖现有阵列。 下面是一行

user.bloodbank_array = newName;
相反,在
newName数组上执行for循环,并将项目推入
user.bloodbank\u数组


for(int i=0;i您可以使用$push操作符直接执行此操作(查找更多信息),但由于您已经首先查找了文档,因此只需执行
user.bloodbank\u array.concat(newName);
而不是像现在使用
user.bloodbank_array=newName
那样为数组分配新值。concat函数是一个标准的JS函数,它在数组末尾插入一个新项。有关更多信息,请阅读

for(int i=0;i<newName.length;i++)
{
    user.bloodbank_array.push(newName[i]);
}