13

Sequelize 1.6 の変更ログには次のようなものがあります。

[FEATURE] 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!
    })

User インスタンスにはリスト メディアがありません。関連付けを自動取得するにはどうすればよいですか?

4

3 に答える 3

28

ところで: Sequelize 1.6.0 がリリースされたので、熱心な読み込みの構文が少し変更されました。

User.find({ where: {id: id}, include: [Media] }).success(function(user){ 
  console.log(user.media)
})

そのため、モデルの名前の代わりにモデルを include ステートメントに渡す必要があります。

于 2013-04-05T20:11:51.457 に答える
6

実際にコードを書いたのは sdepold ですが、彼が決めた include の構文は次のとおりだと思います。

User.find({ where: {id: id}, include: ['Media'] }).success(function(user){ 
  console.log(user.media)
})
于 2012-12-29T05:48:16.890 に答える
4

答えは現在、コード、テスト、および...私の頭の中でのみ利用可能です:D

User.find({ where: {id: id}, include: ['Media'] }).success(function(user){ 
  console.log(user.media)
})

ドキュメントがまだ利用できない理由は、リリースが現在アルファ版であるという事実です。

于 2012-10-22T06:07:52.770 に答える