微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Objection.js-根据“ where”条件插入数据

如何解决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 举报,一经查实,本站将立刻删除。