检查现有用户是否不符合要求

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