序列化通话结构

时间:2018-06-27 07:11:24

标签: javascript node.js express callback sequelize.js

我正在使用sequelize,并想使用以下代码查询数据库:

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

但是代码块无法运行,所以我阅读了文档,他们给出的唯一示例使用以下结构:

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

我在第一个示例中做错了吗?还是我无法使用该结构?

2 个答案:

答案 0 :(得分:0)

Sequelize.js使用承诺。例如,当您使用findOne时,将返回promise。因此,请尝试以下操作:

models.user.findOne({ 
    where: {
        email: req.body.email
    }).then(existingUser => {
       //Do something
    }).catch(err => {
       //Do something with error
    });

答案 1 :(得分:0)

Sequelize> = 1.7查询返回一个promise,要解决它,您需要使用“ 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 
                        }
                      })