2016-09-25 1 views
1

Je génère une requête de mise à jour dynamique basée sur une liste d'objets fournis pour postgres. C'est ce que ma requête ressemble:Erreur de type dans Nodejs et 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 * 

Et voici la liste des valeurs que je te le donne:

[ 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' ] 

Pour autant que je peux dire, les valeurs correspondent correctement. C'est l'erreur que je vois:

{ [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' } 

Et voici le code qui est en cours d'exécution en fin de compte la requête:

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

} 

Et voici la définition de table:

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) 
+0

Comme l'erreur l'indique, vous avez un décalage de type quelque part. Vous affectez un entier à un champ qui est du texte. –

+0

Comme le montrent mes exemples, tous les types de données de ma matrice correspondent correctement aux colonnes du type de données. – Evan

+0

pouvez-vous montrer la définition de votre table? –

Répondre