我正在使用我网站的“编辑用户个人资料”页面。当用户编辑其用户名并按“保存”时,我想首先检查并查看是否有其他用户首先拥有此用户名。
User.findOne({'username' : newUsername }, function(err, user){
if (!user){ //no user exists with this name
//code for changing current user's name to newUsername
} else { //a user exists with this name
//code for returning to the edit page, and displaying error message to user
}
});
问题是我将用户名保持不变(并编辑不同的值,如电子邮件)。当它查询用户名时,它会在mongodb上提取我的文档,因此它不会改变任何内容(因为用户存在!)。如何完全从查询中删除特定文档?
答案 0 :(得分:1)
如果我理解正确,你想抽象你的方法,以便它可以用来改变任何个人资料属性,而不仅仅是用户名?
您可以做的是根据用户正在更改的字段动态创建查询地图。
例如,如果您的用户想要更改其电子邮件字段:
(req.query.type ==用户试图更改的字段)
(req.query.value ==用户尝试更改的字段值)
var query = {};
switch(req.query.type) // Type is username, email, any profile field
{
case 'username':
query['username'] = req.query.value // value of the profile field
break;
case 'email':
query['email] = req.query.value
break;
default:
break;
}
User.findOne(query, function(err, user) { // Query will differ depending on inputs
if (!user) { //no user exists with the type
//code for changing current user's info
} else { //a user exists with this name
//code for returning to the edit page, and displaying error message to user
}
});