mongodb - 检查现有用户是否继续

mongodb - 检查现有用户是否继续,第1张

作为水线的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是否发生,但没有成功。并且使用相同的凭据一次又一次地创建用户。

对于我缺少什么的任何想法?

最佳答案:

1 个答案:

答案 0 :(得分:2)

您需要将回车放入回调

User.findOne(...).exec(
   function(err,user){
      if(!user) User.create(...)
});

但正如其他人所评论的那样,可能不需要这种解决方法。在您链接的问题中,他们解释说它只发生在

migrate: safe

设置config / models.js或在命令行界面中选择。 所以只需将其设置为其他内容即可。如果您愿意,只需设置一次,运行风帆升降并将其更改为安全即可。

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复