Sequelize:更新模型及其关联

时间:2017-11-15 17:36:34

标签: mysql node.js sequelize.js

我有以下表格:

  1. Event
  2. Tasks
  3. 以及以下关联

    Event.hasMany(models.Tasks, {
          as: 'tasks',
           foreignKey: 'event_id'
    })
    

    我使用以下代码更新EventTasks数组

    db.Event.findOne({
        where: {
            id: eventToUpdate.id
        },
        include: [{
            model: db.Tasks,
            as: 'tasks',
        }]
    }).then((existingEvent) => {
       // Loop through existingEvent attributes and existingEvent.dataValues.tasks and 
       // updated the attributes
    }
    

    然而,当我更新它时:

            db.Event.update(existingEvent, { where: { id: existingEvent.id } })
                .then((updatedEvent) => {
                    console.log(updatedEvent)
                }).catch((error) => {
                    console.log("Error + error)
                })
    

    只有Event在数据库中更新,而不是Tasks

    我做错了什么?还是有更好的方法来实现这个目标?

1 个答案:

答案 0 :(得分:0)

很难在评论中更新它。但这是我建议做的,

db.Event.findOne({
    where: {
        id: eventToUpdate.id
    },
    include: [{
        model: db.Tasks,
        as: 'tasks',
    }]
}).then((existingEvent) => {
   return Promise.all(existingEvent.tasks.map(task => task.updateAttributes(taskParams).then(console.log).catch(console.log));
}