Насколько я могу судить, используя Sequelizejs, кажется, что не существует способа сохранить ассоциации объектов, когда сам объект сохраняется.
Например, у меня есть контакт, который может иметь 1 или более номер телефона. В настоящее время у меня есть что-то вроде этого для ассоциации:
global.db.Contact.hasMany(global.db.PhoneNumber, {as: 'phoneNumbers'});
Используя конечную точку отдыха, я хотел бы опубликовать новый контактный объект (с любыми предоставленными номерами телефонов) и сохранить его в базе данных. Мой объект запроса выглядит примерно так:
{
firstName: "john",
lastName: "Doe",
phoneNumbers: [
{ number: "555-555-5555", type: "home" }
]
}
Сейчас я передаю этот объект для сборки:
var contact = Contact.build(req.body);
И затем вызовите save (я знаю, что я мог бы использовать create вместо build/save, но у нас есть пользовательская логика в save для отслеживания измененных данных и какой пользователь сделал модификацию)
contact.save();
Это вызывает следующую ошибку, которая имеет смысл.
column "phoneNumbers" of relation "Contacts" does not exist
Звонок sql пытается установить значение столбца "phoneNumbers", которого не существует. Я, очевидно, не хочу, чтобы это делалось... Я действительно хотел бы, чтобы навалом создавался каждый номер телефона в массиве с идентификатором создаваемого мной контакта.
Единственным примером, который я нашел, было следующее: https://gist.github.com/sdepold/3040391, и я действительно не хочу этого делать... Поскольку я исхожу из конечной точки отдыха, Я хотел бы, чтобы сделать эту операцию в целом (у меня будет много моделей с ассоциациями). Мне также нужно будет делать эти операции навалом (для импорта контактов из других источников), поэтому я бы предпочел, чтобы это было минимальное количество вызовов sql. Кто-нибудь нашел хороший способ сделать это?