我想根据"where“条件将数据插入到我的数据库中,但我无法成功。
Objection.js:
const User = require('../../database/models/user');
router.route('/register')
.get((req,res,next)=>{
res.render('user/register')
})
.post((req,res,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
}
})在任何情况下,它都会输出"user exists“。我想这是因为"user“返回了一个承诺。
我还试着这样做:
const User = require('../../database/models/user');
router.route('/register')
.get((req,res,next)=>{
res.render('user/register')
})
.post((req,res,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
})
}
});
})但是它不会将数据插入数据库。我不知道如何根据条件将数据插入到数据库中。你知道我怎么才能修好它吗?谢谢!
发布于 2020-10-05 14:47:24
insert查询中缺少.then或等待
这应该是可行的:
const User = require('../../database/models/user');
router.route('/register')
.get((req,res,next)=>{
res.render('user/register')
})
.post((req,res,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();
})
}
});
})https://stackoverflow.com/questions/64174003
复制相似问题