Reputation: 143
I want to insert a data into my database based on "where" condition, but I couldn't success.
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
}
})
In any case, it prints "user exists". I think its because "user" returns a promise.
I tried also this :
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
})
}
});
})
But it doesn't insert the data to the database. I don't know how can i insert data into my database based on a condition. Do you know how can i fix it? Thank you!
Upvotes: -1
Views: 1249
Reputation: 19718
You are missing .then or await from the insert query
This should work:
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();
})
}
});
})
Upvotes: 2