我的数据库返回一个对象而不是一个值

My database gets an object returned instead of a value

我正在对我的数据库执行一个 post 用户注册请求 & 每次电子邮件作为一个对象返回时使用这个 {"email":"karl@gmail.com"} 而不是这个 karl@gmail.com

这是nodejs

app.post("/register", (req, res) => {
  const { email, name, password } = req.body;
  var salt = bcrypt.genSaltSync(10);
  var hash = bcrypt.hashSync(password, salt);
  knex
    .transaction((trx) => {
      trx
        .insert({
          hash: hash,
          email: email,
        })
        .into("login")
        .returning("email")
        .then((loginEmail) => {
          return trx("users")
            .returning("*")
            .insert({
              email: loginEmail[0],
              name: name,
              joined: new Date(),
            })
            .then((user) => {
              res.json(user[0]);
            });
        })
        .then(trx.commit)
        .catch(trx.rollback);
    })
    .catch((err) => res.status(400).json("E-mail is already in use"));
});

这是我的第一个数据库中的样子

 14 | Karl      | {"email":"karl@gmail.com"}         |       0 | 2022-01-18 04:02:03.643

这是它在我的第二个数据库中的样子

 12 | a$WsbEExtpu14ps7aK6AYbxOknedUaLusApL8MlD8lv0lCtknBIuPE. | karl@gmail.com

您收到一个 JSON 对象对其进行解码,您将收到您的电子邮件。也不明白为什么您存储 {"email": "karl@gmail.com"} 而您的列应该标记为电子邮件并存储值 karl@gmail.com。 祝你好运!

loginEmail是一个结果数组,每一行都是一个对象。您需要从该对象中获取 email 属性。

            .insert({
              email: loginEmail[0].email,
              name: name,
              joined: new Date(),
            })