【问题标题】:Check mongoose for 2 fields before saving user (with passportjs)在保存用户之前检查 mongoose 的 2 个字段(使用 passportjs)
【发布时间】:2021-03-17 16:18:36
【问题描述】:

我在我的快递应用程序中使用了 passportjs,我刚刚实现了检查 mongoDB 以查看“电子邮件”或“企业名称”是否已注册的代码。我的代码大部分都在工作,所以我只提供我认为必要的部分。



 User.findOne({
            $or: [
              { username: { $regex: req.body.username, $options: "i" } },
              {
                businessName: { $regex: req.body.businessName, $options: "i" },
              },
            ],
          }).then((person) => {
            // email or businessName already exist
            if (person) {
              res.render("signup", {
                exists: "This email is already registered",
                info: req.body,
                errors: errorsObj,
                msg: "Please check the form for errorsss",
              });
            } else {
              const user = new User({
                businessName: req.body.businessName,
                username: req.body.username,
                password: theHash,
              });
              user.save(function (err) {
                if (err) {
                  return next(err);
                }
                //succesful - redirect to login
                res.redirect("/login");
              });
            }
          });

如您所见,我搜索了 2 个字段,并使用 'exists' 变量将错误消息呈现给我的 ejs。但是,我希望能够显示 2 条单独的消息,一条用于“用户名”是否已存在,另一条用于“企业名称”是否已存在。我也尝试过进行设置,因此我进行了 2 次单独的搜索,一次用于“用户名”,一次用于“企业名称”,但我觉得如果我可以避免调用额外的搜索,那会很好。

【问题讨论】:

    标签: node.js mongodb express mongoose passport.js


    【解决方案1】:

    }).then((person) => {

    if ( person.username === req.body.username ){
       //render username message
    }
    if ( businessName ===  person.businessName ) {
       //render busniness name message
    }
    

    【讨论】:

      猜你喜欢
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 2019-12-12
      • 2023-04-10
      • 1970-01-01
      • 2020-11-27
      • 2018-09-25
      • 1970-01-01
      相关资源
      最近更新 更多