据我所知,使用 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);
然后调用保存(我知道我可以使用创建而不是构建/保存,但我们在保存中有自定义逻辑来跟踪修改后的数据以及哪个用户进行了修改)
contact.save();
这会引发以下错误,这是有意义的。
column "phoneNumbers" of relation "Contacts" does not exist
sql 调用正在尝试设置不存在的列“phoneNumbers”的值。我显然不希望它这样做......我真的希望它使用我正在创建的联系人的 ID 批量创建数组中的每个 phoneNumber。
我发现的唯一例子是:https ://gist.github.com/sdepold/3040391我真的不想这样做......因为我来自休息端点,我想要一种方法一般执行此操作(我将有许多具有关联的模型)。我还需要能够批量执行这些操作(用于从其他来源导入联系人),因此我希望它是最少数量的 sql 调用。有没有人找到这样做的好方法?