将数组值存储为整数

问题描述:

尝试以整数存储数组值。这是我的代码。这是错的吗?将数组值存储为整数

db.query('INSERT INTO users(name,student_id) VALUES($1,ARRAY["$2","$3"]::INTEGER[]) RETURNING *', [data.name, data.id]) 
.then(function(user) { }) 
.catch(function(err) { 
    return callback(null, err); 
}) 

,但我得到这个错误

{ 
"name": "error", 
"length": 102, 
"severity": "ERROR", 
"code": "42703", 
"position": "70", 
"file": "parse_relation.c", 
"line": "3090", 
"routine": "errorMissingColumn" 
} 

42703意味着undefined_column - 出现这种情况,是因为你周围使用"$2","$3"双引号和双引号识别数据库对象(在查询的这部分 - 列)。删除它们是:

db.query('INSERT INTO users(name,student_id) VALUES($1,ARRAY[$2,$3]::INTEGER[]) RETURNING *', [data.name, data.id]) 
.then(function(user) { }) 
.catch(function(err) { 
    return callback(null, err); 
}) 
+0

是我删除双引号和我收到这样的'你需要重写或铸expression' – katy

+0

这意味着醚'$ 1'是不同的数据类型,那么“名”列或“student_id”列不是整数[]数据类型。但这是完全不同的问题 –

+0

名称列是字符,但student_id是整数。我需要存储多个ID到student_id列,所以你有任何想法的数组字段的外键约束? – katy