Можно ли обновлять атрибуты как для родительской модели, так и для связанных моделей всего за один раз? У меня возникли проблемы с его работой, и я не смог найти никаких примеров. Я не уверен, что что-то не так с моим кодом или если оно не предназначено для работы, как я ожидал бы. Я попытался добавить onUpdate: 'cascade' в мое определение hasMany, но это ничего не делало.
Модели:
module.exports = function( sequelize, DataTypes ) {
var Filter = sequelize.define( 'Filter', {
id : {
type : DataTypes.INTEGER,
autoIncrement : true,
primaryKey : true
},
userId : DataTypes.INTEGER,
filterRetweets : DataTypes.BOOLEAN,
filterContent : DataTypes.BOOLEAN
},
{
tableName : 'filter',
timestamps : false
}
);
var FilteredContent = sequelize.define( 'FilteredContent', {
id : {
type : DataTypes.INTEGER,
autoIncrement : true,
primaryKey : true
},
filterId : {
type : DataTypes.INTEGER,
references : "Filter",
referenceKey : "id"
},
content : DataTypes.STRING
},
{
tableName : "filteredContent",
timestamps : false
}
);
Filter.hasMany( FilteredContent, { onUpdate : 'cascade', as : 'filteredContent', foreignKey : 'filterId' } );
sequelize.sync();
return {
"Filter" : Filter,
"FilteredContent" : FilteredContent
};
}
Извлечение фильтра и попытка обновления атрибута на связанном объекте FilteredContent:
Filter.find({ where: { id: 3 },
include: [ { model : FilteredContent, as : 'filteredContent' } ]
}).success ( function( filter ) {
var filteredContent = FilteredContent.build( {
filterId : filter.id,
id : 2,
content : 'crap'
});
filter.save();
});
Это приводит только к атрибутам в обновляемом объекте Filter. Как получить его, чтобы обновить атрибуты в FilteredContent?
Кроме того, требуется ли sequelize.sync() после определения моих моделей? Я не понимаю, что именно он должен делать. Я могу получить свой объект с ассоциациями без него. Я добавил его в свой код в отчаянии, чтобы получить обновления, но я не уверен, действительно ли это необходимо.
Спасибо