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

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

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

我在一个if语句中调用这个函数,但是结果总是未定义的

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

没有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) { // ... } }); 

我不喜欢用count来检查logging的存在。 假设你有百万条logging的相似性,为什么要计算它们全部,如果你只想得到布尔值,如果存在则返回true,否则返回false。

findOne会在匹配时以第一个值完成工作。

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

由于Sequelize无论如何都是围绕着承诺而devise的, alecxe的答案可能是最有意义的,但是为了提供替代scheme,您还可以传递一个callback:

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