检查现有用户是否不符合要求
Check for existing user doesn't go along
作为 Waterline 的 unique
属性 is ignored for MongoDB,我决定检查代码中的现有模型条目:
var username = req.param('username');
var email = req.param('email');
var asd = "";
// Do check if user already exists
User.findOne({username: username}, function (err, user) {
asd = "invalid USERNAME";
console.log(asd);
if(err){
return res.serverError('error creating user' + err);
}
if(user){
asd = "invalid USERNAME";
console.log(asd);
return res.json({status: "INVALID_USERNAME"});
}
});
User.findOne({email: email}, function (err, user) {
asd = "invalid EMAIL";
console.log(asd);
if(err){
return res.serverError('error creating user' + err);
}
if(user){
asd = "invalid EMAIL";
console.log(asd);
res.json({status: "INVALID_EMAIL"});
}
});
// Create the user
User.create({.....});
尽管如此,我从未进入 findOne
方法,即使数据库中确实存在具有所提供凭据的用户。我试过调试,但我没有进入声明。我什至放了这个 asd
变量,只是为了检查 smth 是否发生,但没有成功。并且使用相同的凭据一次又一次地创建用户。
想知道我错过了什么吗?
您需要将创建放在回调中
User.findOne(...).exec(
function(err,user){
if(!user) User.create(...)
});
但正如其他人评论的那样,可能不需要此解决方法。在您链接的问题中,他们解释说它只发生在
migrate: safe
设置 config/models.js 或在命令行界面中选择。
所以只需将其设置为其他内容即可。设置一次就够了,运行升帆,喜欢改回safe
作为 Waterline 的 unique
属性 is ignored for MongoDB,我决定检查代码中的现有模型条目:
var username = req.param('username');
var email = req.param('email');
var asd = "";
// Do check if user already exists
User.findOne({username: username}, function (err, user) {
asd = "invalid USERNAME";
console.log(asd);
if(err){
return res.serverError('error creating user' + err);
}
if(user){
asd = "invalid USERNAME";
console.log(asd);
return res.json({status: "INVALID_USERNAME"});
}
});
User.findOne({email: email}, function (err, user) {
asd = "invalid EMAIL";
console.log(asd);
if(err){
return res.serverError('error creating user' + err);
}
if(user){
asd = "invalid EMAIL";
console.log(asd);
res.json({status: "INVALID_EMAIL"});
}
});
// Create the user
User.create({.....});
尽管如此,我从未进入 findOne
方法,即使数据库中确实存在具有所提供凭据的用户。我试过调试,但我没有进入声明。我什至放了这个 asd
变量,只是为了检查 smth 是否发生,但没有成功。并且使用相同的凭据一次又一次地创建用户。
想知道我错过了什么吗?
您需要将创建放在回调中
User.findOne(...).exec(
function(err,user){
if(!user) User.create(...)
});
但正如其他人评论的那样,可能不需要此解决方法。在您链接的问题中,他们解释说它只发生在
migrate: safe
设置 config/models.js 或在命令行界面中选择。 所以只需将其设置为其他内容即可。设置一次就够了,运行升帆,喜欢改回safe