在postgre中的节点中插入函数

时间:2017-04-10 15:49:54

标签: javascript node.js postgresql express pg-promise

你好我正在关注一个教程并尝试做一个简单的插入查询,但得到404错误。我正在尝试使用邮递员输入值。

功能

function insertUser(req, res, next){
  req.body.users = parseInt(req.body.users);
  
  db.none('INSERT INTO office.users (role_id, office_id, user_name, full_name) ' +
    'VALUES (${role_id}, ${office_id}, ${user_name}, ${full_name})', req.body.users)
   .then(function(){
        res.status(200)
        .json({
          status: 'success',
          message: 'Inserted one user'
   });
   })
 .catch(error => {
        console.log(error);
        next();
})
}

堆栈跟踪说问题接近“值”。我没有得到它。随后我随文档流动。查询有问题吗?

堆栈跟踪

POST / api / users 401 83.997 ms - 43 {[错误:语法错误在或附近“$”]   名称:'错误',   长度:102,   严重性:'错误',   代码:'42601',   细节:未定义,   提示:未定义,   位置:'78',   internalPosition:undefined,   internalQuery:undefined,   其中:undefined,   schema:undefined,   表:undefined,   专栏:未定义,   dataType:undefined,   约束:未定义,   file:'src \ backend \ parser \ scan.l',   行:'1053',   例程:'scanner_yyerror}}

我第五天和Node.Bear在一起。

2 个答案:

答案 0 :(得分:0)

错误代码42601是postgres语法错误。如果您要将您的sql语句打印到页面,您会看到如下内容:

"INSERT INTO office.users VALUES (role_id,office_id,user_name,full_name)values(${role_id},${office_id},${user_name},${full_name})"

这有多少问题。首先,使用VALUES列在您的列之前。其次,列列表与(正确的)values关键字之间没有空格。您的陈述应如下所示:

"INSERT INTO office.users (role_id, office_id, user_name, full_name) VALUES (${role_id}, ${office_id}, ${user_name}, ${full_name})"

这意味着您的javascript需要看起来更像这样:

db.none('INSERT INTO office.users (role_id, office_id, user_name, full_name) ' +
        'VALUES (${role_id}, ${office_id}, ${user_name}, ${full_name})', req.body.users);

答案 1 :(得分:0)

愚蠢的错误声明变量

这有效



 db.none('INSERT INTO office.users(role_id, office_id, user_name, full_name, password)' +
         'values(${role_id},${office_id},${user_name},${full_name},${password})', req.body)