2016-08-19 95 views
0

我有以下兩種模式:Sequelize預先加載:的hasMany包括父

module.exports = function(sequelize, DataTypes) { 
    var ChatRoom = sequelize.define('ChatRoom', { 
    status: DataTypes.STRING, 
    }, { 
    classMethods: { 
     associate: function(models) { 
     ChatRoom.hasMany(models.User) 
     ChatRoom.hasMany(models.Message) 
     } 
    } 
    }); 

    return ChatRoom; 
}; 

module.exports = function(sequelize, DataTypes) { 
    var User = sequelize.define("User", { 
    friendly_id: DataTypes.STRING, 
    }, { 
    classMethods: { 
     associate: function(models) { 
     User.hasMany(models.Message) 
     } 
    } 
    }); 

    return User; 
}; 

當我取一個用戶,我希望獲取相關ChatRoom爲好。我嘗試以下

models.User.findOne({ 
    where: {messenger_id: senderID}, 
    include: [{model: models.ChatRoom}] 
}).then(function(user) { ... }) 

但我得到這個錯誤

ChatRoom is not associated to User! 

回答

0

當定義User模型,你也應該這樣模型與模型ChatRoom關聯。

我不知道你的業務邏輯,但我想在User模型associate方法應該是這樣的:

associate: function(models) { 
    User.hasMany(models.Message); 
    User.belongsTo(models.ChatRoom, { 
     onDelete: "CASCADE", 
     foreignKey: { 
      allowNull: false 
     } 
    }); 
}