Home > Net >  My database gets an object returned instead of a value
My database gets an object returned instead of a value

Time:01-18

I am doing a post request on my database for user registers & every time the email gets returned as an object with this {"email":"[email protected]"} instead of this [email protected]

This is the 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"));
});

This is how it looks in my 1st database

 14 | Karl      | {"email":"[email protected]"}         |       0 | 2022-01-18 04:02:03.643

This is how it looks in my 2nd database

 12 | $2a$10$WsbEExtpu14ps7aK6AYbxOknedUaLusApL8MlD8lv0lCtknBIuPE. | [email protected]

CodePudding user response:

loginEmail is an array of results, and each row is an object. You need to get the email property from that object.

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

CodePudding user response:

you are receiving a JSON object decode that and you will get your email out. also don't understand why you store {"email": "[email protected]"} when your column should be labeled email and store the value [email protected]. Best of luck!

  •  Tags:  
  • Related