【问题标题】:Sequelize (1 user hasMany posts, 1 post has 1 user, 1 post hasMany evaluation that belongs to a user)Sequelize(1个用户有很多帖子,1个帖子有1个用户,1个帖子有很多属于一个用户的评价)
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 那么,你可以关闭这个问题
    • 如何结束我的问题?
    猜你喜欢
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 2020-11-13
    • 2021-06-12
    相关资源
    最近更新 更多