Sequelize 与别名的关联不存在

编程入门 行业动态 更新时间:2024-10-24 00:19:32

Sequelize 与别名的关联<a href=https://www.elefans.com/category/jswz/34/1770716.html style=不存在"/>

Sequelize 与别名的关联不存在

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

我有两个模型,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"
}
回答如下:

更多推荐

Sequelize 与别名的关联不存在

本文发布于:2024-05-13 15:30:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1759867.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:不存在   别名   Sequelize

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!