在 QueryFile 中多次插入

Multi insert inside a QueryFile

由于 pg-promise 助手,我能够生成多插入或更新的查询,但我想知道我是否可以听从作者的建议并将所有查询放在我的 javascript 代码之外(见此处 https://github.com/vitaly-t/pg-promise/wiki/SQL-Files and here : https://github.com/vitaly-t/pg-promise-demo).

当我使用插入助手时,return 查询看起来像:

INSERT INTO "education"("candidate_id","title","content","degree","school_name","start_date","still_in","end_date","picture_url") VALUES('6','My degree','Business bachelor','Bachelor +','USC','2018-05-15T02:00:00.000+02:00'::date,false,null::date,null),('6','Another degree','Engineering','Master degree','City University','2018-05-15T02:00:00.000+02:00'::date,false,null::date,null)

思路是不知道同时要插入多少条,所以必须是动态的

以下代码不起作用,因为我传递的是对象数组而不是对象:

db.none(`INSERT INTO "education"("candidate_id","title","content","degree","school_name","start_date","still_in","end_date","picture_url") 
      VALUES($<candidate_id>, $<title>, $<content>, $<degree>, $<school_name>, $<start_date>, $<still_in>, $<end_date>, $<picture_url>)`, data)

此代码传播了对象,但仍然不正确,无法进行正确的查询:

db.none(`INSERT INTO "education"("candidate_id","title","content","degree","school_name","start_date","still_in","end_date","picture_url") 
      VALUES(:list)`,
          [data])

有什么想法吗?至少有可能还是在我不知道要提前插入多少条记录的情况下每次都必须调用 pgp.helpers

您混淆了静态和动态SQL。 SQL 文件用于 SQL 主要是静态的查询,即您仍然可以动态注入很多,但是当大多数查询是动态的时,将它放入 SQL 文件.

helpers 命名空间仅用于动态查询。所以你问的是两个独立的东西,加入不需要加入的东西。