Node.js Nodejs:将行查询续写到postgis上的批量插入
在我的nodejs工作者服务中,我使用sequelize行查询将批量数组插入postgresql数据库。这是我要插入的数组对象: 我正在使用Node.js Nodejs:将行查询续写到postgis上的批量插入,node.js,sequelize.js,postgis,Node.js,Sequelize.js,Postgis,在我的nodejs工作者服务中,我使用sequelize行查询将批量数组插入postgresql数据库。这是我要插入的数组对象: 我正在使用unnest从数组中提取对象,但如何从unset方法中选择特定属性? 对于测试,我只想添加nid,因此这是我的批量插入方法: async function bulkInsert(datas) { return new Promise((resolve, reject) => { let values = []; Object.ke
unnest
从数组中提取对象,但如何从unset方法中选择特定属性?
对于测试,我只想添加nid,因此这是我的批量插入方法:
async function bulkInsert(datas) {
return new Promise((resolve, reject) => {
let values = [];
Object.keys(datas).forEach(key => {
values.push(JSON.parse(datas[key]))
});
let strpgsql =
`INSERT into public."sub_data" ("nid")
VALUES ('unnest(${values.nid})')`
sequelize.pgsql.query(strpgsql);
});
}
当我运行我的方法时,我得到了rhis错误
Executing (default): INSERT into public."sub_data" ("nid")
VALUES ('unnest(undefined)')
sequelize.js:1187
Unhandled rejection SequelizeDatabaseError: invalid input syntax for type uuid: "unnest(undefined)"
注:
我必须使用行查询,因为我必须通过此命令将wkt属性更改为geometry
类型ST_geomefromtext('${req.wkt}',4326)
您只需要数组中每个对象的
nid
值?如果是这样的话,那么首先就做letvalues=Object.values(datas.map)(v=>JSON.parse(v)['nid'])
。然后,values
就是来自nid
键的值的数组。我想这就是你想要的。您可以只在现有的值上.map(({nid})=>nid)
,但您也可以只提取您想要开始的内容。看到的不仅仅是nid!这里有几个字段,但对于测试,我只使用了nid1。我想列出.map(v=>
插入postgresql@Neillun)中的
v`n,但不清楚您当时在问什么。您需要更具体地回答这个问题。我上面的观点主要是值。nid
不能仅从对象数组中提取该值。您可以使用.map()
通过命名键提取特定值。从我的图片中可以看到,我有一个对象列表。如何通过行查询将对象列表批量插入数据库?@NeilLunn