根据条件更新 sequelize 列

Update a sequlize column based on condition

所以我想根据条件更新我的 table 列,这里是代码。

await CourseSubscriber.update({ 
      completion_percentage: completion_percentage,
      completed_on: **, // over here i want to check if completion_percentage<100 then update this one
    }, {
         where: {
           course_id: course_id,
           academy_id,
           user_id: user_id
    }
  })

一种方法是添加 2 个基于 completion_percentage

的更新查询
if(completion_percentage < 100){
   await CourseSubscriber.update({ 
      completion_percentage: completion_percentage,
      completed_on: null,
     }, {
        where: {
          course_id: course_id,
          academy_id,
          user_id: user_id
     }
   })
} else {
   await CourseSubscriber.update({ 
      completion_percentage: completion_percentage
     }, {
        where: {
          course_id: course_id,
          academy_id,
          user_id: user_id
     }
   })
}

这是另一个解决方案

        const payload={ 
            completion_percentage: completion_percentage,
        }
        if(completion_percentage < 100){
            payload.completed_on = null
        }
        await CourseSubscriber.update(payload, {
            where: {
                course_id: course_id,
                academy_id,
                user_id: user_id
            }
        })

这样我们只对数据库进行一次查询。