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();
            })
        }
    });
})