Заставьте Sequelize использовать returning: true для всех мутаций - PullRequest
0 голосов
/ 30 марта 2020

Есть ли какой-нибудь способ заставить все операции создания / обновления / уничтожения в Sequelize использовать returning: true автоматически?

Я пытался вставить его в defaultScope, но, похоже, он не действует.

1 Ответ

0 голосов
/ 30 марта 2020

Я не знаю, возможно ли это настроить, но вы можете довольно легко реализовать "взлом", изменив методы оригинальной модели. В файле, где вы создаете свой экземпляр Sequelize, создайте ссылку на оригинальный метод Model, который вы хотите изменить, а затем «замените» его модифицированной функцией, которая вызывает оригинал:

 const originalCreate =  Sequelize.Model.create//Create a reference to the original function.

     Sequelize.Model.create =async  function(values,options={}){              

           const opt = {...options,returning:true}//Intercept the options and append "returning"
           console.log(values,opt)
           const data =await  originalCreate.call(this,values,opt);//Call the original function.
           return data;               

       }


const sequelize = new Sequelize(...)//Create the instance...

. Вы можете повторите этот перехват для каждого метода Model, который вы хотите изменить.

Обратите внимание, что "возврат" работает только для Postgres, в соответствии с документацией.

...