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