Разделить структуру вызовов - PullRequest
0 голосов
/ 27 июня 2018

Я работаю с sequelize и хочу запросить мою базу данных, используя следующий код:

models.user.findOne({ where: {email: req.body.email} }, (err, existingUser) => {
.... More code
}

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

models.user.findOne({ where: {title: 'aProject'} }).then(project => {
.... Code
})

Что-то не так с первым примером или я просто не могу использовать эту структуру?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Sequelize> = 1.7 запрос возвращает обещание, для его решения необходимо использовать «then»

nb: вы можете использовать модель напрямую из декларации вместо "models.user" следующим образом:

const Userdb = sequelize.define('userdb', {
 id : {
  primaryKey: true,
  autoIncrement:true,
  allowNull:false,
  type: Sequelize.INTEGER
},
  email: {
  type: Sequelize.STRING,
  allowNull:false,
  validation:{
   isEmail:true
  },

username: {
  type:  Sequelize.STRING,
  allowNull:false,
  min:6,
  max:25,
  notEmpty:true,
}
}

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

Userdb.findOne({
            where: { 
                    email: req.body.email
                   }
               }).then((result)=>{
                   if(results) // there is one user 
                      {
                    // do something with resutls 
                      }else{
                        // no user with that mail 
                        }
                      })
0 голосов
/ 27 июня 2018

Sequelize.js использует обещания. Когда вы используете findOne, например, возвращается promise. Поэтому попробуйте следующее:

models.user.findOne({ 
    where: {
        email: req.body.email
    }).then(existingUser => {
       //Do something
    }).catch(err => {
       //Do something with error
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...