我的数据库返回一个对象而不是一个值
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(),
})
我正在对我的数据库执行一个 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(),
})