Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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:将行查询续写到postgis上的批量插入_Node.js_Sequelize.js_Postgis - Fatal编程技术网

Node.js Nodejs:将行查询续写到postgis上的批量插入

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

在我的nodejs工作者服务中,我使用sequelize行查询将批量数组插入postgresql数据库。这是我要插入的数组对象:

我正在使用
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