我正在尝试建立一个火种克隆应用程序,我有两种不同类型的用户:一个player和一个trainer,他们可以匹配在一起。我查阅了文档,试图找出在matches表和messages表之间实现哪些正确的关联,其中匹配记录具有playerId和trainerId,消息也是如此。
我的问题是:
如何实现,以及何时应用belongsTo、hasMany、belongToMany关联?
这就是我到目前为止所做的:
players.model.js
players.associate = function (models) {
players.hasMany(models.messages);
players.hasMany(models.matches);
};trainers.model.js
teachers.associate = function (models) {
trainers.hasMany(models.messages);
trainers.hasMany(models.matches);
};messages.model.js
messages.associate = function (models) {
messages.belongsTo(models.players);
messages.belongsTo(models.trainers);
messages.belongsTo(models.matches);
};matches.model.js
matches.associate = function (models) {
matches.belongsTo(models.players);
matches.belongsTo(models.trainers);
matches.hasMany(models.messages);
};发布于 2020-05-28 05:32:30
您可以注册所有模型,然后再注册它们的所有关联,如下所示:
var fs = require('fs')
var path = require('path')
var basename = path.basename(module.filename)
var db = {}
var models = path.join(__dirname, 'models')
fs.readdirSync(models)
.filter(function(file) {
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js')
})
.forEach(function(file) {
var model = sequelize['import'](path.join(models, file))
db[model.name] = model
})
Object.keys(db).forEach(function(modelName) {
if (db[modelName].associate) {
db[modelName].associate(db)
}
})然后,您可以导出db对象以使用所有模型来查询数据
例如,使用训练器获取所有匹配,而玩家则包含以下内容:
const allMatches = db.matches.findAll({
include: [db.trainers, db.players]
})https://stackoverflow.com/questions/62051287
复制相似问题