Sequelize 与别名的关联不存在

问题描述 投票:0回答:0

我知道有一大堆这样的问题,我尝试了很多我能找到的解决方案,但似乎没有一个对我有用。

我有两个模型,Player 和 PlayerSkill。

玩家:

import Sequelize from 'sequelize';
import database from '../index';

const Player = database.define(
     'player',
   {
    id: {
      type: Sequelize.INTEGER,
      autoIncrement: true,
      allowNull: false,
      primaryKey: true,
    },
    name: {
      type: Sequelize.STRING(200),
      allowNull: false,
    },
    position: {
      type: Sequelize.STRING(200),
      allowNull: false,
    },
  },
  {
    timestamps: false,
  }
);

Player.associate = models => {
  models.Player.hasMany(models.PlayerSkill, {
    as: 'playerskills',
    foreignKey: 'playerId',
  });
};

export default Player;

我的 PlayerSkill 模型:

import Sequelize from 'sequelize';
import database from '../index';

const PlayerSkill = database.define(
  'playerSkill',
  {
    id: {
      type: Sequelize.INTEGER,
      autoIncrement: true,
      allowNull: false,
      primaryKey: true,
    },
    skill: {
      type: Sequelize.STRING(200),
      allowNull: false,
    },
    value: {
      type: Sequelize.INTEGER,
    },
    playerId: {
      type: Sequelize.INTEGER,
      allowNull: false,
    },
  },
  {
    timestamps: false,
  }
);

PlayerSkill.associate = models => {
  models.PlayerSkill.belongsTo(models.Player, {
    foreignKey: 'playerId',
    allowNull: false,
  });
};

export default PlayerSkill;

我需要以如下所示的方式获取数据:

{
    "id": 1,
    "name": "player name 2",
    "position": "midfielder",
    "playerSkills": [
        {
            "id": 1,
            "skill": "attack",
            "value": 60,
            "playerId": 1
        },
        {
            "id": 2,
            "skill": "speed",
            "value": 80,
            "playerId": 1
        }
    ]
}

这是我的获取功能:

// Create new player
  await Player.create(req.body)
    .then(() => {
      PlayerSkill.bulkCreate(skills);
    })
    .then(() => Player.findAll({ include: ['playerskills'] }))
    .then(result => console.log(result))
    .catch(err => {
      res.status(400).send({
        message: err.message || 'Error occurred while creating player',
      });
    });

邮递员要求:

{
    "name": "player1",
    "position": "defender",
    "playerSkills": [
        {
            "skill": "strength",
            "value": 90,
            "playerId": 1
        },
        {
            "skill": "speed",
            "value": 90,
            "playerId": 1
        }
    ]
}

我不明白我在这里做错了什么。我不断收到以下错误:

{
    "message": "Association with alias \"playerskills\" does not exist on player"
}
node.js database express sequelize.js relationship
© www.soinside.com 2019 - 2024. All rights reserved.