0

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

尝试执行查询时出现错误error invalid input synatx for integer: "{39}"(39 是示例编号)update

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

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

    //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();
}); 

为什么这不起作用并且号码无法识别?

提前致谢

4

1 回答 1

0

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

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

于 2013-12-03T03:38:06.177 回答