“update”查询 - 错误无效的整数输入语法:“{39}” - postgresql

时间:2013-10-28 19:46:28

标签: sql node.js postgresql insert sql-insert

我正在使用节点js 0.10.12对postgreSQL 9.1执行查询。

当我尝试执行error invalid input synatx for integer: "{39}"查询时,我收到错误update(39是示例数字)

我看不出有什么问题。有什么建议吗?

这是我在前端的代码(片段)

    //this is global
    var gid=0;

    //set websockets to search - works fine
    var sd = new WebSocket("ws://localhost:0000");

    sd.onmessage = function (evt) 
    { 
    //get data, parse it, because there is more than one vars, pass id to gid
    var received_msg = evt.data;
    var packet = JSON.parse(received_msg);
    var tid = packet['tid'];
    gid=tid;
    }

    //when user clicks button, set websockets to send id and other data, to perform update query
    var sa = new WebSocket("ws://localhost:0000");

    sa.onopen = function(){
     sa.send(JSON.stringify({
      command:'typesave', 
      indi:gid, 
      name:document.getElementById("typename").value, 
    }));

sa.onmessage = function (evt) { 
alert("Saved");
sa.close;
gid=0;//make gid 0 again, for re-use
}

后端(查询)

var query=client.query("UPDATE type SET t_name=$1,t_color=$2 WHERE t_id = $3 ",[name, color, indi])
    query.on("row", function (row, result) {
        result.addRow(row);
        });
        query.on("end", function (result) {
    connection.send("o");
    client.end();
}); 

为什么这不起作用且数字无法识别?

提前致谢

1 个答案:

答案 0 :(得分:0)

正如人们对初始问题的预期,您的数据库驱动程序将一个成员的整数数组发送到整数字段。 PostgreSQL正确拒绝数据并返回错误。 PostgreSQL术语中的'{39}'与使用数组构造函数的ARRAY[39]和JSON中的[39]完全等效。

现在,显然您可以更改查询调用以从JSON数组中提取第一个项目。并发送它而不是整个数组,但我会担心如果事情发生变化并且你得到多个值会发生什么。您可能希望将此逻辑分离出来用于此数据结构。