javascript - 在postgre的 Node 中插入函数

标签 javascript node.js postgresql express pg-promise

您好,我正在遵循教程并尝试执行简单的插入查询,但收到 404 错误。我正在尝试使用 postman 输入值。

功能

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 毫秒 - 43 { [错误:“$”处或附近的语法错误] 名称:'错误', 长度:102, 严重性:“错误”, 代码:'42601', 详细信息:未定义, 提示:未定义, 位置:'78', 内部位置:未定义, 内部查询:未定义, 其中:未定义, 模式:未定义, 表:未定义, 列:未定义, 数据类型:未定义, 约束:未定义, 文件:'src\backend\parser\scan.l', 行:'1053', 例程:'scanner_yyerror'}

这是我使用 Node.Bear 的第五天。

最佳答案

错误代码 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);

关于javascript - 在postgre的 Node 中插入函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43327711/

相关文章:

sql - 我们可以在 PostgreSql 中向类型表添加列吗?

sql - 如何将 name 列拆分为 PostgreSQL 中的 firstName 和 lastName 列?

javascript - 如何让点击 x 次后出现不同的文本?

linux - 如何将文件从 Docker 容器同步回其主机?

javascript - 网页设计 : how does one translate margin or border values like "medium", "thin"等转化为数字?

node.js - 通过 Waterline 将新 Document 添加到 Json 字段类型中

javascript - 如何在 Sequelize Js 中更改数据库迁移顺序

sql - 如何有效地真空分析 Postgres 中的表

javascript - 测量小部件区域值显示在文本框中

javascript - 无法在文本字段中输入任何文本