我正在尝试修改“计划”表的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;
};
谢谢:)
答案 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
})
})