如何从findOne函数MySQL返回布尔值

时间:2020-11-03 12:03:47

标签: mysql node.js asynchronous async-await sequelize.js

我想将findOne的结果用作if语句的条件。我无法返回truefalse,但我发现对于async函数来说,它是不同的,但是尽管有几次尝试都没有用。

Controller.js

  // Find a single User with a sub
exports.findOne = (req, res) => {
const sub = req.params.sub;

User.findOne({sub})
  .then(data => {
res.send(data);
  })
  .catch(err => {
res.status(500).send({
message: "Error retrieving User with sub=" +sub
});
  });
};

前端

//INFO SAVE AND UPDATE CONDITION

async function exist() {
let x = await InfoDataService.get(data.sub)
console.log(x);
if (x === null) {

return true;

}
return false;
}

if ( exist() ) {
    InfoDataService.create(data)
      .then((response) => {
        console.log('create', response.data);
        setInfo({
          id: response.data.id,
          sub: response.data.sub,
          email: response.data.email,
          firstname: response.data.firstname,
          lastname: response.data.lastname
        });
      })
      
  } else {
    InfoDataService.update(sub, data)
      .then((response) => {
                
        console.log(response.data);
      })
      .catch((e) => {
        console.error(e);
      });
  }
  };

1 个答案:

答案 0 :(得分:0)

您有2个选项可以执行此操作。两者只是互补的。

// option 1 
if (x) {
    return true;
}
return false;

// OR
// option 2
if (!x) {
    return false;
}
return true;