问题描述
我正在使用 node js 和 sequelize (MysqL) 构建 resful api。
为了使用模型创建事件,我正在这样做:
add(req,res) {
return event.create(
{
name: req.body.name,users: req.body.users,},{
include: [
{
model: User,as: "users",],}
)
一切正常。
但是当我想更新时,我在这里遇到了大问题。 例如我当前的事件看起来像:
"events" : [
{
"id" : 1,"name" :"name"
"users" :[
{
"id" :1,"name" :"name1",{
"id" :2,"name" :"name2",}
]
}]
我想要达到的目标: 我想更新用户: 如果请求中存在用户 ID,我想更新用户,但如果请求中不存在用户 ID,我想删除用户。
我如何在 sequelize 和 node js 中做到这一点。我在这里堆栈。
解决方法
向您的路由器展示您尝试处理该逻辑的位置。 当你说用户存在时,你的意思是用户完全存在还是只属于请求的事件,请更具体!!!
// lets say you want to update users of event id=1
const event = await Event.findByPk(1)
// you can get users belonging to event by association mixins
const users = await event.getUsers()
// loop through users to update them
for (let i=0; i < users.length; i++) {
// put your logic to make changes to users
if (users[i].getDataValue('id') == 1) {
await event.removeUser(users[i])
}
}