不存在"/>
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 与别名的关联不存在
发布评论