我正在使用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。我的坏…