Objection.js - 根据"where"条件插入数据
Objection.js - insert data based on "where" condition
我想根据“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
}
})
无论如何,它都会打印“用户存在”。我认为这是因为“用户”returns 一个承诺。
我也试过这个:
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 或 await
这应该有效:
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();
})
}
});
})
我想根据“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
}
})
无论如何,它都会打印“用户存在”。我认为这是因为“用户”returns 一个承诺。
我也试过这个:
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 或 await
这应该有效:
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();
})
}
});
})