在数组mongodb中添加另一个项目

时间:2019-03-10 16:46:11

标签: 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) {
            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"
]

2 个答案:

答案 0 :(得分:1)

您可以使用$ push运算符直接执行操作(有关更多信息,请查看here),但是由于您已经先查找了文档,因此您可以执行user.bloodbank_array.concat(newName);而不是给像您现在使用user.bloodbank_array = newName一样处理数组。 concat函数是标准的JS函数,可在数组末尾插入新项目。有关更多信息,您可以阅读mozilla article

答案 1 :(得分:0)

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

user.bloodbank_array = newName;

相反,在newName array上执行for循环,并将项目推入user.bloodbank_array中 喜欢

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