gpt4 book ai didi

node.js - 如何使用node.js正确地将新元素推送到mongodb数组

转载 作者:太空宇宙 更新时间:2023-11-03 23:36:42 25 4
gpt4 key购买 nike

在我的 Node 应用程序中,我需要向数组“roles”添加 2 个元素,该数组属于集合“users”。我正在使用 native mongodb 驱动程序。这是我的代码:

MongoClient.connect(url, function (err, db) {
if (err) {
console.log('Unable to connect to the mongoDB server. Error:', err);
} else {
console.log('Connection established to', url);

var collection = db.collection('users');

var roles = req.body.requestedRoles.split(',');

roles.forEach(function(role){
collection.update(
{
email: req.body.userEmail
},
{
$push: { roles: role }
},
{upsert: true},
function(err, result) {
if (err) {
console.log('err: ' + err);
}
else {
console.log('update result: ' + result);
}
}
);
});

collection.update(
{
email: req.body.userEmail
},
{
$push: { roles: req.body.requestedRoles }
},
{upsert: true},
function(err, result) {
if (err) {
console.log('err: ' + err);
}
else {
console.log('update result: ' + result);
}
}
);
}
});

req.body.requestedRoles 包含“role-1,role-2”

当此代码运行时,我最终得到以下 3 个(而不是 2 个)角色:“role-1”、“role-2”、“role-1,role-2”

显然,我不需要第三个条目。我可以改变什么来避免这种情况?

最佳答案

roles.forEach 以及 forEach 回调内的一个 collection.update(...) 。这会导致 role-1,role-2 的推送,因此请将其删除!

关于node.js - 如何使用node.js正确地将新元素推送到mongodb数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31374775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com