通过关联更新Sequelize

时间:2018-09-04 14:04:10

标签: sequelize.js

我正在尝试修改“计划”表的2个字段,但不能。我出现了错误。我不明白:

此表中有多个字段,但我只想更改开始日期和结束日期

这是方法:

exports.updateWorkingDates = (req, res) => {
Coach.find({
    where: {
        id: req.params.coachId
    },
    include: [{
        model: Schedule,
        attributes: ['start_date', 'end_date']
    }]
}).then(coach => {
    const updatedSchedule = {
        start_date: req.body.start_date,
        end_date: req.body.end_date ? req.body.end_date : null
    }
    coach.setSchedule(updatedSchedule).then(() => {
        res.status(200).json({
            message: "Modified."
        })
    }).catch(err => {
        console.log(err)
    })
    })
}

错误:

Error: Invalid value { start_date: '2018-07-07' }

模型:

   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;
};

谢谢:)

2 个答案:

答案 0 :(得分:0)

有必要将日期设置为特定格式

应该使用moment.js https://momentjs.com/

示例:

const updatedSchedule = {
    start_date: moment(req.body.start_date),
    end_date: req.body.end_date ? moment(req.body.end_date) : null
}

时刻格式:

moment().format('MMMM Do YYYY, h:mm:ss a'); // September 4th 2018, 5:20:54 pm
moment().format('dddd');                    // Tuesday
moment().format("MMM Do YY");               // Sep 4th 18
moment().format('YYYY [escaped] YYYY');     // 2018 escaped 2018
moment().format();                          // 2018-09-04T17:20:54+03:00

祝你好运!

答案 1 :(得分:0)

我创建了这个并且它起作用了:

Schedule.update({
    start_date: req.body.start_date,
    end_date: req.body.end_date ? req.body.end_date : null,
}, {
    where: {
        fk_id_coach: req.params.coachId
    }
}).then(() => {
    res.status(200).json({
        message: "Dates modifiées."
    })
}).catch(err => {
    res.status(500).json({
        error: err
    })
})
相关问题