Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Nodejs和Postgres中的类型错误_Node.js_Postgresql_Node.js Pg - Fatal编程技术网

Node.js Nodejs和Postgres中的类型错误

Node.js Nodejs和Postgres中的类型错误,node.js,postgresql,node.js-pg,Node.js,Postgresql,Node.js Pg,我正在根据为postgres提供的对象列表生成一个动态更新查询。我的查询是这样的: update loan_item_assignment as t set id = c.id, dateselectionid = c.dateselectionid, loanitemid = c.loanitemid, active = c.active, type = c.type from (values ( $1, $2, $3, $4, $5 ), ( $6, $7, $8, $9, $10 ), (

我正在根据为postgres提供的对象列表生成一个动态更新查询。我的查询是这样的:

update loan_item_assignment as t set id = c.id, dateselectionid = c.dateselectionid, loanitemid = c.loanitemid, active = c.active, type = c.type from (values ( $1, $2, $3, $4, $5 ), ( $6, $7, $8, $9, $10 ), ( $11, $12, $13, $14, $15 ), ( $16, $17, $18, $19, $20 ), ( $21, $22, $23, $24, $25 ), ( $26, $27, $28, $29, $30 ), ( $31, $32, $33, $34, $35 ), ( $36, $37, $38, $39, $40 ) ) as c( id, dateselectionid, loanitemid, active, type ) where c.id = t.id returning *
下面是我给出的价值清单:

[ 7,
35,
3,
true,
'normal',
8,
35,
4,
true,
'normal',
1,
35,
6,
true,
'normal',
2,
35,
7,
true,
'normal',
3,
35,
8,
true,
'normal',
5,
35,
10,
true,
'normal',
4,
35,
11,
true,
'normal',
6,
35,
12,
true,
'normal' ]
据我所知,这些值匹配正确。这就是我看到的错误:

{ [error: operator does not exist: text = integer]
name: 'error',
length: 195,
severity: 'ERROR',
code: '42883',
detail: undefined,
hint: 'No operator matches the given name and argument type(s). You might need to add explicit type casts.',
position: '448',
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: undefined,
table: undefined,
column: undefined,
dataType: undefined,
constraint: undefined,
file: 'parse_oper.c',
line: '726',
routine: 'op_error' }
这是最终运行查询的代码:

var performQuery = function(text, values, cb) {
   pg.connect(connectionString, function(err, client, done) {
     client.query(text, values, function(err, result) {
       done();
       if (!result) {
         console.log(err);
         cb([], err);
       } else {
         cb(result.rows, err);
       }
     })
   });

}
以下是表格定义:

Table "public.loan_item_assignment"
Column      |  Type   |                             Modifiers                             | Storage  | Stats target | Description 
-----------------+---------+-------------------------------------------------------------------+----------+--------------+-------------
id              | integer | not null default nextval('loan_item_assignment_id_seq'::regclass) | plain    |              | 
dateselectionid | integer |                                                                   | plain    |              | 
loanitemid      | integer |                                                                   | plain    |              | 
active          | boolean |                                                                   | plain    |              | 
type            | text    |                                                                   | extended |              | 
Indexes:
"loan_item_assignment_pkey" PRIMARY KEY, btree (id)
Foreign-key constraints:
"loan_item_assignment_dateselectionid_fkey" FOREIGN KEY (dateselectionid) REFERENCES date_selection(id)
"loan_item_assignment_loanitemid_fkey" FOREIGN KEY (loanitemid) REFERENCES loan_item(id)

Vitaly-t对我的答案的评论是解决方案——使用库生成查询,特别是生成多行更新查询的方法,如所示。

正如错误所示,您在某些地方存在类型不匹配。您正在为文本字段分配一个整数。正如我的示例所示,数组中的所有数据类型都与数据类型中的列正确匹配。是否可以显示表的定义?当然,我将以正确的方式更新主问题:。