0
最近我一直在學習Node.JS,目前我正在使用Sequelize。 我有更新方法的問題;它更新得很好,但是當我輸入應該與屬性的數據類型不兼容的值時,它仍然會傳遞它,並在數據庫中更新它。例如:在Postman中,當我嘗試用字符串更新記錄的「已完成」屬性時,即使數據類型被指定爲布爾值,並且沒有提供錯誤消息(請求狀態爲200),它也會被更新。 下面是代碼:未驗證的Sequelize DataTypes
待辦事項模型:
module.exports = function (sequelInst, DataTypes){ return sequelInst.define('todo', { description: { type: DataTypes.STRING, allowNull: false, validate: { len: [1, 250] } }, completed: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false } }); };
server.js:
... app.put('/todos/:id', function(req,res){ var body =_.pick(req.body, 'description', 'completed'); var attributes = {}; var paramId = parseInt(req.params.id, 10); if(body.hasOwnProperty('completed')){ attributes.completed = body.completed; } if(body.hasOwnProperty('description')) { attributes.description = body.description; } db.todo.findById(paramId) .then(function(todo){ // First Promise Chain if(todo){ return todo.update(attributes); } else{ res.status(404).send("No todo corresponding to id"); } }, function() { res.status(500).send("Server Error"); }) .then(function(todo) { // Second Promise Chain res.send(todo); }, function (e){ res.status(400).json(e); }); });