我正在使用sequelize,并想使用以下代码查询数据库:
models.user.findOne({ where: {email: req.body.email} }, (err, existingUser) => {
.... More code
}
但是代码块无法运行,所以我阅读了文档,他们给出的唯一示例使用以下结构:
models.user.findOne({ where: {title: 'aProject'} }).then(project => {
.... Code
})
我在第一个示例中做错了吗?还是我无法使用该结构?
答案 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
}
})