Мульти вставка внутри QueryFile - PullRequest
0 голосов
/ 15 апреля 2019

Я могу сгенерировать запрос для нескольких вставок или обновить благодаря помощникам pg-обещания, но мне было интересно, смогу ли я последовать совету автора и поставить все запросы вне моего кода JavaScript (см. Здесь https://github.com/vitaly-t/pg-promise/wiki/SQL-Files и здесь: https://github.com/vitaly-t/pg-promise-demo).

Когда я использую помощники вставки, возвращаемый запрос выглядит так:

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 голосов
/ 16 апреля 2019

Вы путаете статический и динамический SQL.SQL-файлы предназначены для SQL-запросов, которые в основном являются статическими, то есть вы все еще можете много динамически внедрять, но когда большая часть запроса является динамической, больше нет смысла помещать его в SQL-файл.

Ипространство имен helpers существует только для динамических запросов.Таким образом, вы спрашиваете о двух разных вещах: объединять вещи, которые не нужно объединять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...