Sequelize(1个用户有许多帖子,1个帖子有1个用户,1个帖子有许多属于用户的评价)



我正在使用Sequelize创建一个带有Users, Pots和Evaluations表的后端。

用户有很多帖子,每个帖子有很多评价。我想获得一个评价,既属于一个帖子,也属于一个用户,但我不知道该如何创建这个关联

我的代码在github上,但这里有一个预览:

模型文件夹:User.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;

Evaluation.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;

evaluate .js只与帖子相关联,而不与帖子的所有者相关联

算了吧,是数据库在评估表中缺少了用户id。我的坏…

相关内容

最新更新