2016-08-19 2 views
0

Ich habe die folgenden zwei Modelle:Sequelize eifrig Laden: hasMany umfassen Eltern

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; 
}; 

Wenn ich einen Benutzer zu holen, ich will die ChatRoom auch im Zusammenhang holen. Ich habe versucht, die folgenden

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

Aber ich bekomme diese Fehlermeldung

ChatRoom is not associated to User! 

Antwort

0

Bei der Definition des User Modells, sollten Sie auch dieses Modell in Verbindung mit dem ChatRoom Modell.

Ich weiß nicht, Ihre Business-Logik, aber ich nehme an, die associate Methode des User Modell sollte folgendermaßen aussehen:

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