[英]Why is it so diffuclt to update by association in sequelize
我有兩個模型通過源 Model 上的 hasMany 關聯。我第一次使用 Sequelize 花了一段時間,但我已經能夠創建一個新用戶並使用 include 參數獲取數據庫中的用戶列表. 但是當我嘗試使用包含更新時,它確實更新了源 Model,但沒有更新關聯的 model 上的信息
Model 1
import Sequelize from "sequelize";
import database from "../index";
import PlayerSkill from "./playerSkill";
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),
},
},
{
timestamps: false,
}
);
Player.hasMany(PlayerSkill, {
// through: "players_skills",
as: "playerSkills",
timestamps: false,
foreignKey: false,
// attributes: { exclude: ["playerSkillId"] },
});
// Player.hasMany(PlayerSkill);
// PlayerSkill.belongsTo(Player);
export default Player;
Model 2
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),
},
value: {
type: Sequelize.INTEGER,
},
},
{
timestamps: false,
}
);
export default PlayerSkill;
創建路線工作正常
import Player from "../../db/model/player";
import PlayerSkill from "../../db/model/playerSkill";
export default async (req, res) => {
const { name, position, playerSkills } = req.body;
try {
const player = await Player.create(
{
name,
position,
playerSkills,
},
{
include: "playerSkills",
}
);
console.log(`Player created and saved!`);
res.json(player);
} catch (error) {
console.log(error.stack);
}
};
import Player from "../../db/model/player";
export default async (req, res) => {
const requestedId = req.params.id;
try {
const { name, position, playerSkills } = req.body;
const player = await Player.update(
{
name,
position,
playerSkills,
},
{
include: "playerSkills",
where: { id: requestedId },
}
);
res.json(player);
} catch (error) {
console.log(` This is the error ${error}`);
}
};
更新只會更新玩家表
import Player from "../../db/model/player";
export default async (req, res) => {
const requestedId = req.params.id;
try {
const { name, position, playerSkills } = req.body;
const player = await Player.update(
{
name,
position,
playerSkills,
},
{
include: "playerSkills",
where: { id: requestedId },
}
);
res.json(player);
} catch (error) {
console.log(` This is the error ${error}`);
}
};
該模型的update
方法不支持include
選項,因此您需要使用主 model 中生成的輔助方法來添加/更改/刪除關聯項,或者使用關聯 model 的直接方法來執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.