sequelize 1.6の変更ログには、次のものがあります。
[機能] findおよびfindAllの関連付けプリフェッチを追加しました
問題はどのようにですか?
次のモデルを定義しています。
var self = {
Medium: client.define("Medium", {
name: Sequelize.STRING,
description: Sequelize.TEXT
},
User: client.define("User", {
firstName: Sequelize.STRING,
lastName: Sequelize.STRING,
email: Sequelize.STRING,
aboutArt: Sequelize.TEXT,
bio: Sequelize.TEXT,
password: Sequelize.STRING,
description: Sequelize.TEXT
}
};
self.User.hasMany(self.Medium, { as: 'Media' });
self.Medium.hasMany(self.User);
for(var key in self){
var model = self[key];
model.sync();
}
後でこのようなユーザーをフェッチすると:
User.find(id)
.success(function(record) {
//record has no media!
})
ユーザーインスタンスにはリストメディアがありません。アソシエーションを自動フェッチするにはどうすればよいですか?
ところで:Sequelize 1.6.0がリリースされたので、積極的な読み込みの構文が少し変更されました。
User.find({ where: {id: id}, include: [Media] }).success(function(user){
console.log(user.media)
})
したがって、モデルの名前の代わりにモデルをincludeステートメントに渡す必要があります。
sdepoldが実際にコードを作成しましたが、彼が決めた構文は次のとおりです。
User.find({ where: {id: id}, include: ['Media'] }).success(function(user){
console.log(user.media)
})
答えは現在、コード、テスト、そして...私の頭の中だけで利用可能です:D
User.find({ where: {id: id}, include: ['Media'] }).success(function(user){
console.log(user.media)
})
まだ利用できないドキュメントの理由iiiiiisは、リリースが現在アルファ版であるという事実です。