Sequelize как проверить, существует ли запись в базе данных

мне нужно проверить, существует ли запись с определенным идентификатором в базе данных с помощью Sequelize in Node.js

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

Я вызываю эту функцию в операторе if, но результат всегда не определен

if(isIdUnique(id)){...}

4 ответов


вы не отвечает С 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) {
        // ...
    }
});

Я не использую графа чтобы проверить наличие записи. Предположим, у вас есть сходство для сотен в миллионах записей, зачем считать их все, если вы хотите просто получить логическое значение, true, если существует false, если нет?

findOne выполнит работу при первом значении, когда есть соответствие.

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

Как Sequelize разработан вокруг обещаний в любом случае,alecxe это вероятно, имеет смысл, но ради предложения альтернативы вы также можете передать обратный вызов:

function isIdUnique (id, done) {
    db.Profile.count({ where: { id: id } })
      .then(count => {
        done(count == 0);
      });
  }
}

isIdUnique(id, function(isUnique) {
  if (isUnique) {
    // stuff
  }
});

вы можете считать и находить.

    Project
  .findAndCountAll({
     where: {
        title: {
          [Op.like]: 'foo%'
        }
     },
     offset: 10,
     limit: 2
  })
  .then(result => {
    console.log(result.count);
    console.log(result.rows);
  });

Doc ссылка, бета-версия v5