多次插入QueryFile

时间:2019-04-15 20:24:07

标签: node.js postgresql pg-promise

借助pg-promise帮助程序,我能够生成用于多次插入或更新的查询,但是我想知道是否可以遵循作者的建议并将所有查询置于我的javascript代码之外(请参见{{3} }和此处:https://github.com/vitaly-t/pg-promise/wiki/SQL-Files)。

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

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($1:list)`,
          [data])

有什么主意吗?至少有可能,或者在我不知道要插入多少条记录的情况下,我每次必须打电话给pgp.helpers吗?

1 个答案:

答案 0 :(得分:0)

您将静态和动态SQL混淆了。 SQL文件中有一些主要用于静态查询的SQL查询,也就是说,您仍然可以动态地进行大量注入,但是当大多数查询是动态的时,再也没有必要将其放入SQL文件中了。

helpers名称空间仅用于动态查询。因此,您要问两件事,那就是将不需要连接的东西连接起来。