Sequelize.js Sequelize-更新列,其中col=动态变量

Sequelize.js Sequelize-更新列,其中col=动态变量,sequelize.js,Sequelize.js,使用Sequelize是否可以动态选择带有变量的列 例如: 我有一个以天为列(星期一、星期二、星期三,…)的表格(日程表),在那里我存储工作时间 我想选择与我的客户端请求相对应的列(客户端我返回一天(字符串),在这一天,我必须选择正确的列并修改它。我可以使用 coach.getSchedule({ attributes: [dateToLowerCase] }) 但无法修改,我尝试了以下方法: // schedule.se

使用Sequelize是否可以动态选择带有变量的列

例如:

我有一个以天为列(星期一、星期二、星期三,…)的表格(日程表),在那里我存储工作时间

我想选择与我的客户端请求相对应的列(客户端我返回一天(字符串),在这一天,我必须选择正确的列并修改它。我可以使用

coach.getSchedule({
            attributes: [dateToLowerCase]
        })
但无法修改,我尝试了以下方法:

                // schedule.set(day, hoursString) 
但无法保存,它返回一个错误

编辑:

型号:

module.exports = (sequelize, DataTypes) => {
  var Schedule = sequelize.define('Schedule', {
    start_date: DataTypes.DATEONLY,
    end_date: DataTypes.DATEONLY,
    monday: DataTypes.STRING(24),
    tuesday: DataTypes.STRING(24),
    wednesday: DataTypes.STRING(24),
    thursday: DataTypes.STRING(24),
    friday: DataTypes.STRING(24),
    saturday: DataTypes.STRING(24),
    sunday: DataTypes.STRING(24)
  }, {
    freezeTableName: true
  });
  Schedule.associate = function (models) {
    Schedule.belongsTo(models.Coach, {
      foreignKey: 'fk_id_coach'
    })
  };
  return Schedule;
};
控制器:

exports.updateCoachSchedule = (req, res) => {
const coachId = req.body.coachId
const day = req.body.day;
const indexArray = req.body.indexArray;
Coach.find({
    where: {
        id: coachId
    }
}).then((coach) => {
    if (!coach) {
        return res.status(404).json({
            message: "Coach inexistant"
        })
    }
    dateToLowerCase = day.toLowerCase();;

    coach.getSchedule({
            attributes: [dateToLowerCase]
        }).then(schedule => {
            if (!schedule) {
                return res.status(404).json({
                    message: 'Pas d\'horaire.'
                })
            }
            const stringRetrieved = schedule.dataValues
            const chainOfStringSchedule = stringRetrieved[Object.keys(schedule.dataValues)[0]]
            hours = transformChainSchedule(chainOfStringSchedule)

            for (var i = 0; i < hours.length; i++) {
                hours[i] = indexArray.includes(i) ? "1" : "0";
            }

            const hoursString = hours.join("")



            schedule.set(day, hoursString).save().then(() => {
                res.status(200).json({
                    message: "Schedule modified !",
                    schedule

                })
            }).catch(err => {
                res.json({
                    err
                })
            })



        })
        .catch(err => {
            res.status(500).json({
                error: err
            })
        })
})
exports.updateCachSchedule=(请求、回复)=>{
const coachId=req.body.coachId
const day=所需的body.day;
const indexArray=req.body.indexArray;
Coach.find({
其中:{
id:coachId
}
}).然后((coach)=>{
如果(!coach){
返回res.status(404.json)({
信息:“教练不远”
})
}
dateToLowerCase=day.toLowerCase();;
coach.getSchedule({
属性:[dateToLowerCase]
})。然后(时间表=>{
如果(!时间表){
返回res.status(404.json)({
信息:“帕斯·德·霍莱尔。”
})
}
const stringRetrieved=schedule.dataValues
const chainOfStringSchedule=stringRetrieved[Object.keys(schedule.dataValues)[0]]
小时=转换链计划(转换链计划)
对于(变量i=0;i{
res.status(200).json({
消息:“计划已修改!”,
日程
})
}).catch(错误=>{
res.json({
犯错误
})
})
})
.catch(错误=>{
res.status(500).json({
错误:错误
})
})
})
}

谢谢!

请不要用这句话

schedule.set(day, hoursString).save().then()
使用下面的一个,这将解决您的问题

let updateData = {};
updateData[day] = hoursString;
schedule.update(updateData).then()

您在schedule.set(day,hoursString)中传递的值是什么?@Vivek Doshi,值day=my request(示例:星期一),hoursString=字符串链“hoursString”:“00111100001000000000000”。它是24个字符,表示一天中的小时数(0=关闭时间,1=打开时间)是否有错误?如果没有,请发布该行生成的原始查询。如果在schedule.set(day,hoursString)之后使用console.log(schedule),则会修改schedule,但当我必须将其保存在db中时会发生错误。postman的响应是:error{}
Executing(默认值):选择
monday`FROM
Schedule
AS
Schedule
WHERE
fk_id_coach
=1个限制1;POST/api/admin/coach/Schedule/update 500 25.507 ms-12`非常感谢,这解决了我的问题。当我得到日程表时,只需在属性上添加'id'。