2016-04-07 4 views
4

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

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

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

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

ответ

7

Вы не возвращаются из 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) { 
     // ... 
    } 
}); 
+0

Как вы связываете свои модели как дочерние объекты основного объекта secelize/db? – NobleUplift

4

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

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

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

Это очень хороший подход, спасибо за предложение –

+0

welcome @ mr.Holiday – jalal246

+0

Как вы загружаете модели Sequelize в качестве дочерних объектов объекта 'db'? – NobleUplift

1

Как Sequelize строится вокруг обещаний так или иначе, alecxe's answer, вероятно, имеет больше смысла, но ради предлагая альтернативу, вы можете также передать в функции обратного вызова:

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

isIdUnique(id, function(isUnique) { 
    if (isUnique) { 
    // stuff 
    } 
}); 
Смежные вопросы