gpt4 book ai didi

javascript - 使用 MongoDB 更新功能无法正确更改用户名?

转载 作者:行者123 更新时间:2023-12-03 10:37:28 24 4
gpt4 key购买 nike

下面是我的代码片段,我首先搜索注释集合,看看其中是否有任何包含我要将当前 session 的用户名更改为的用户名。如果用户名尚未使用,则可能会更改为该用户名,因此我更改当前 session 的用户名,然后将每个注释更新为该新用户名下,然后显示changesuccess.jade 文件。但是,当我运行代码时,除了每个注释的用户名没有改变之外,一切似乎都运行良好。我觉得这是由于第五行的 find() 方法造成的。任何帮助将不胜感激!

router.post('/changeusername',function(req, res) {
var newUsername = req.body.username;
var user = req.session.username;

var userFound = notesCollection.find( { owner: newUsername } )

var results = function(infoInput) {
res.render("changedUser.jade", {title: "Username Change",
info: infoInput});
}

var checkChange = function(err) {
if (err) {
results("Username change failed!");
} else {
results("Username changed!");
}
}

console.log(userFound);

if (!userFound.length) {
notesCollection.update({ owner: user },
{ owner: newUsername},
{ multi: true },
checkChange);
} else {
res.render("changedUser.jade", {title: "Username Change",
info: "Username change failed!"});
}
});

最佳答案

如果我正确理解您的问题,您正在尝试更新 mongodb 中的集合,但它没有得到更新。所以问题出在你打电话 mongoose#update 的方式上.

由于您想要更新“所有者”,因此您应该使用 mongodb#$set

Mongoose 在条件中也支持相同的 $set 运算符。

所以只需对您的情况进行一些修正:

var conditions = { owner: user }
, update = { $set: { owner: newUsername }}
, options = { multi: true };

notesCollection.update(conditions, update, options, callback);

function callback (err, numAffected) {
// numAffected is the number of updated documents
})

所以现在就试试这个。

关于javascript - 使用 MongoDB 更新功能无法正确更改用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28933836/

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