2016-08-19 3 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 модели.

Я не знаю, бизнес-логику, но я полагаю, что associate метод User модели должен выглядеть следующим образом:

associate: function(models) { 
    User.hasMany(models.Message); 
    User.belongsTo(models.ChatRoom, { 
     onDelete: "CASCADE", 
     foreignKey: { 
      allowNull: false 
     } 
    }); 
} 
Смежные вопросы