【发布时间】:2021-08-17 10:30:40
【问题描述】:
我正在使用 Sequelize 创建一个包含表用户、罐子和评估表的后端。
用户有很多帖子,每个帖子都有很多评价。我想获得属于帖子和用户的评价,但我不知道我应该如何建立这种关联
我的代码在github,但这里有一个预览:
模型文件夹: 用户.js:
const { Model, DataTypes } = require('sequelize');
class User extends Model {
static init(sequelize) {
super.init({
name: DataTypes.STRING,
age: DataTypes.INTEGER,
city: DataTypes.STRING,
email: DataTypes.STRING,
password: DataTypes.STRING,
}, {
sequelize
})
}
static associate(models) {
this.hasMany(models.Post, { foreignKey: 'user_id', as: 'posts' });
}
}
module.exports = User;
Post.js:
const { Model, DataTypes } = require('sequelize');
class Post extends Model {
static init(sequelize) {
super.init({
description: DataTypes.STRING,
image_url: DataTypes.STRING,
latitude: DataTypes.STRING,
longitude: DataTypes.STRING,
}, {
sequelize
})
}
static associate(models) {
this.belongsTo(models.User, { foreignKey: 'user_id', as: 'owner' });
this.hasMany(models.Evaluation, { foreignKey: 'post_id', as: 'evaluations' });
}
}
module.exports = Post;
评估.js
const { Model, DataTypes } = require('sequelize');
class Evaluation extends Model {
static init(sequelize) {
super.init({
review: DataTypes.INTEGER,
rate: DataTypes.DECIMAL(2,1),
}, {
sequelize
})
}
static associate(models) {
this.belongsTo(models.Post, { foreignKey: 'post_id', as: 'postage' });
this.belongsTo(models.User, { foreignKey: 'user_id', as: 'owner' });
}
}
module.exports = Evaluation;
Evaluation.js 仅与帖子相关联,不与帖子所有者关联
【问题讨论】:
标签: mysql node.js sequelize.js associations evaluate