Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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
Javascript 使用对象键作为列名将对象的JSON数组插入postgreSQL_Javascript_Sql_Json_Postgresql - Fatal编程技术网

Javascript 使用对象键作为列名将对象的JSON数组插入postgreSQL

Javascript 使用对象键作为列名将对象的JSON数组插入postgreSQL,javascript,sql,json,postgresql,Javascript,Sql,Json,Postgresql,我有一个用Javascript编写的应用程序,它使用postgreSQL(9.6)DB存储数据。 有没有办法将Javascript对象直接插入数据库 我创建了这个示例表: CREATE TABLE people ( "uuid" uuid PRIMARY KEY, "name" text NOT NULL, "phone" number ); 应用程序中的Javascript对象: { uuid: 'df7c5fdc-d6b7-4b5e-ac3b-1228fac64a90',

我有一个用Javascript编写的应用程序,它使用postgreSQL(9.6)DB存储数据。 有没有办法将Javascript对象直接插入数据库

我创建了这个示例表:

CREATE TABLE people (
  "uuid" uuid PRIMARY KEY,
  "name" text NOT NULL,
  "phone" number
); 
应用程序中的Javascript对象:

{
  uuid: 'df7c5fdc-d6b7-4b5e-ac3b-1228fac64a90',
  name: 'Martin',
  phone: 123456
}
现在我有了一个不同人物的数组(上面的对象数组),我设法以这种方式将它插入到DB中:

let uuids = people.map(p => `'${p.uuid}'`) // adding quotes, otherwise syntax error
let names = people.map(p => `'${p.name}'`)
let phones = people.map(p => `'${p.phone}'`)

INSERT INTO people (
  "uuid",
  "name",
  "phone"
)
VALUES (
  UNNEST(ARRAY[${uuids}])::uuid,
  UNNEST(ARRAY[${names}])::text,
  UNNEST(ARRAY[${phones}])::number
)
有没有更有效的方法?像mongo
db.collection.insertMany(数组)
?另外,我想省略一些值,让它们
NULL
,这在本例中是不可能的

我在PostgreSQL文档中搜索,有几个函数可以使用json,但我找不到任何适合的函数


谢谢您的帮助。

有机会测试
json\u to\u recordset()

其中占位符应该绑定到您描述的对象数组(当然,除了正确的JSON)


有机会测试
json\u to\u recordset()

其中占位符应该绑定到您描述的对象数组(当然,除了正确的JSON)


是什么让你认为这是低效的呢?Postgresql的
json\u to\u recordset()
函数与
INSERT-in组合在一起看起来很有希望。。。选择
作为完全在SQL中执行此操作的方法。“添加引号,否则会出现语法错误”听起来像是正在进行的SQL注入。@好吧,用map创建三个新数组很奇怪。在我的应用程序中,我有10多个属性,因此这意味着有10多个新数组都是不受欢迎的。@IljaEverilä在JSON之后似乎很安全。Stringify什么让你认为这有什么低效的地方?Postgresql的
JSON_to_recordset()
函数与
INSERT-In组合在一起时看起来很有希望。。。选择
作为完全在SQL中执行此操作的方法。“添加引号,否则会出现语法错误”听起来像是正在进行的SQL注入。@好吧,用map创建三个新数组很奇怪。在我的应用程序中,我有10多个属性,因此这意味着有10多个新数组都是不受欢迎的。@IljaEverilä在JSON.stringify之后似乎很安全。如果这样,我只需要做
JSON_to_记录集(JSON.stringify(myArraw))
,谢谢!那就行了,我只需要做
json\u to\u记录集(json.stringify(myArraw))
,谢谢!
INSERT INTO people("uuid", name, phone)
SELECT "uuid", name, phone
FROM json_to_recordset(?) AS x("uuid" uuid, name text, phone int);