【问题标题】:Using OUTPUT in sql to return the inserted row JAVASCRIPT/NODEJS/PG在sql中使用OUTPUT返回插入的行JAVASCRIPT/NODEJS/PG
【发布时间】:2019-07-18 05:11:14
【问题描述】:

如果我的查询成功插入,我最终会尝试调​​用回调函数。 我正在考虑尝试获取插入的行作为结果,然后测试结果是否存在,如果它与插入的值匹配,那么它是成功的 - >调用我的 cb 函数。我收到一个错误,表明我的查询有问题。有更好的查询吗?

  var username = user.username;
  var password = user.password;
  var email = user.email;
  client.query(
    'INSERT INTO account (username, password, email) OUTPUT 
     INSERTED.username VALUES($1, $2, $3)',
    [username, password, email], (err, res) =>{
      if (err) {
        console.log(err);
        cb(err);
      }
      console.log(res); // this is undefined how do i test if it was inserted?
      client.end();
    });

抛出的错误是“\"OUTPUT\"处或附近的语法错误

【问题讨论】:

    标签: sql node.js postgresql pg


    【解决方案1】:

    Postgres Insert 返回值的语法无效。没有输出这样的东西。试试

    insert into account (username, password, email)  
         values($1, $2, $3) returning username;
    

    但是真的是为什么兄弟?如果插入不起作用,您可以在 Postgres 上中继以引发异常;如果返回值的比较失败,错误在哪里?在插入或发送的数据,或数据结果进行比较。

    【讨论】:

    • 谢谢。如果没有报错,就100%保证插入正确?
    • 我一直在这个假设下工作,从来没有遇到过问题。至少如果我发送正确的数据。
    猜你喜欢
    • 2021-08-14
    • 1970-01-01
    • 2017-09-13
    • 2019-12-29
    • 2019-01-30
    • 1970-01-01
    • 2013-08-24
    相关资源
    最近更新 更多