sequelize寻找关联查找(1.6)

mko*_*yak 13 node.js sequelize.js

sequelize 1.6在changelog中有以下内容:

[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();
}
Run Code Online (Sandbox Code Playgroud)

后来我拿这样的用户:

 User.find(id)
    .success(function(record) {
        //record has no media!
    })
Run Code Online (Sandbox Code Playgroud)

用户实例没有列表媒体.我如何自动获取关联?

sde*_*old 28

顺便说一句:现在Sequelize 1.6.0已经发布,热切加载的语法略有改变:

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

因此,您必须将Model而不是Model的名称传递给include语句.

  • 我似乎无法让它工作:`Item.hasOne(Item,{foreignKey:'parentAid',as:'Parent'})`.它说`Error:Item与Item!'没有关联,即使我得到了:`Item.hasOne(Item,{foreignKey:'parentAid',as:'Parent'})` (6认同)

Dan*_*ohn 6

sdepold实际上编写了代码,但我相信他确定的语法包括:

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