续集如何检查数据库中是否存在条目
我需要检查数据库中是否存在具有特定标识的条目,使用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 } });