gpt4 book ai didi

orm - Sequelize.js 模型关联

转载 作者:行者123 更新时间:2023-12-03 22:34:54 27 4
gpt4 key购买 nike

我正在尝试构建一个 Tinder 克隆应用程序,其中我有两种不同类型的用户:playertrainer,它们可以匹配在一起。我已经通过文档试图找出哪些是在 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);
};

最佳答案

您可以注册所有模型,然后像这样注册它们的所有关联:

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]
})

关于orm - Sequelize.js 模型关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62051287/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com