繁体   English   中英

使用 express.js 处理重复项

[英]Handle duplicates with express.js

所以我第一次尝试使用 express 创建登录并使用 Postgres 做出反应。 我的用户可以添加到数据库中,所以我开始处理重复项。 我正在使用 findUserByEmail 函数来查找我的电子邮件,然后在我的路由中,在发布电子邮件之前调用该函数。 我希望你们能帮助我,我已经用了 1 周了。

这是我的querys.js,其中我:

const findUserByEmail = email => {
  return pool.query("SELECT * FROM users WHERE email = $1", [email]);
};

const createUser = (request, response) => {
  const date_created = new Date();
  const { username, email, password } = request.body;

  bcrypt.genSalt(saltRounds, function(err, salt) {
    bcrypt.hash(password, salt, function(err, hash) {
      pool.query(
        `INSERT INTO users (username, email, password, date_created) VALUES ($1, $2, $3, $4 )`,
        [username, email, hash, date_created],
        (error, results) => {
          // console.log("---------->", email);
          if (error) {
            throw error;
          }
          response.status(201).send(`User added with ID: ${results.insertId}`);
        }
      );
    });
  });
};



这是我的 index.js:

// ...Other connection code

//Routes

app.get("/users", queries.getUsers);
app.get("/user/:id", queries.getUserById);

app.post("/signup/user", (req, res, next) => {
  console.log(req.body.email, "----------1");
  queries
    .findUserByEmail(req.body.email)
    .then(user => {
      console.log(user.rows.length);
      if (user.rows.length < 0) {
        res.status(400).send("this email is already in use");
      } else {
        console.log("Hello");
        queries.createUser;
      }
    })
    .catch(err => {
      console.log(err);
      res.status(500).send("Something went wrong");
    });
});

app.put("/user/:id", queries.updateUser);
app.delete("/user/:id", queries.deleteUser);

app.listen(port, () => {
  console.log(`App running on port ${port}.`);
});

没有给我一个错误,但是当我提交一个新用户时,会永远发布并且不会改变。

我的帖子请求直到现在都没有使用 findUserByEmail。

谢谢你的帮助。

你不能保证findUsersByEmail会找到任何东西,即使之前有一个调用,创建一个用户。 原因是创建用户的查询可能尚未返回。

您需要数据库约束来处理这个问题。

对电子邮件字段设置唯一约束并正确处理重复异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM