Sequelize如何检查数据库中是否存在条目

mr.*_*day 14 javascript node.js sequelize.js

我需要使用Node.js中的Sequelize检查数据库中是否存在具有特定ID的条目

  function isIdUnique (id) {
    db.Profile.count({ where: { id: id } })
      .then(count => {
        if (count != 0) {
          return false;
        }
        return true;
      });
  }
Run Code Online (Sandbox Code Playgroud)

我在if语句中调用此函数,但结果始终未定义

if(isIdUnique(id)){...}
Run Code Online (Sandbox Code Playgroud)

Jal*_*lal 19

我不喜欢用count来检查记录是否存在.假设你有几百万条记录的相似性,为什么要计算它们全部如果你想得到布尔值,如果存在则为真,如果不存在则为假?

当匹配时,findOne将以第一个值完成工作.

const isIdUnique = id =>
  db.Profile.findOne({ where: { id} })
    .then(token => token !== null)
    .then(isUnique => isUnique);
Run Code Online (Sandbox Code Playgroud)


ale*_*cxe 11

没有isIdUnique函数返回:

function isIdUnique (id) {
    return db.Profile.count({ where: { id: id } })
      .then(count => {
        if (count != 0) {
          return false;
        }
        return true;
    });
}

isIdUnique(id).then(isUnique => {
    if (isUnique) {
        // ...
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 使用count意味着每次都会遍历数据库中的所有记录。使用 findOne() 会更有效,如下面 Jalal 的回答所示 (3认同)