如何解决Objection.js-根据“ where”条件插入数据
我想基于“ where”条件将数据插入数据库中,但无法成功。
Objection.js:
const User = require('../../database/models/user');
router.route('/register')
.get((req,res,next)=>{
res.render('user/register')
})
.post((req,next)=>{
const {email,password} = req.body;
const user = User.query().where('email','=',email);
if(user){
console.log('user exists');
// do something
}
if(!user){
console.log('user doesnt exist');
// do something
}
})
在任何情况下,它都会打印“用户存在”。我认为这是因为“用户”返回了承诺。
我也尝试过这个:
const User = require('../../database/models/user');
router.route('/register')
.get((req,password} = req.body;
User.query().where('email',email).then(row => {
if(row.length == 1){
console.log('user exists');
}
if(row.length == 0){
User.query().insert({
email : email,password : password
})
}
});
})
但是它不会将数据插入数据库。 我不知道如何根据条件将数据插入数据库。你知道我该如何解决吗? 谢谢!
解决方法
您丢失了.then或正在等待插入查询
这应该有效:
const User = require('../../database/models/user');
router.route('/register')
.get((req,res,next)=>{
res.render('user/register')
})
.post((req,next)=>{
const {email,password} = req.body;
User.query().where('email','=',email).then(row => {
if(row.length == 1){
console.log('user exists');
}
if(row.length == 0){
User.query().insert({
email : email,password : password
}).then(result => {
res.status(204).send();
})
}
});
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。