express.js와 함께 sequelize.js를 사용하십시오.sequelize.js로 대체 작업을 만드는 방법은 무엇입니까?
모델의 기존 인스턴스를 새 인스턴스로 바꿔야합니다. 모든 필수 필드가 있는지 확인하기 위해 대체 인스턴스를 저장하기 전에 새 인스턴스의 유효성을 검사해야합니다. 그러나 validate()
은 예상대로 작동하지 않습니다. 다음 예제에서는 req.body
에 requiedId
이 누락되었습니다. 새 location
을 만들고 req.body
에서 someAttribute
을 설정하고 validate()
으로 전화하십시오. requiredId
가 누락되어 모델에 allowNull: false
으로 정의되어 있기 때문에 유효성 검사 오류가 발생할 것으로 예상됩니다. 이것은 사실이 아니며 업데이트가 행복하게 실행됩니다. 내가 수동으로 requiredId
에 대한 null
값을 추가하는 경우 예상대로
sequelize.define('location', {
locationId: {
type: DataTypes.STRING,
allowNull: false,
primaryKey: true,
},
requiredId: {
type: DataTypes.INTEGER,
allowNull: false,
},
someAttribute: {
type: DataTypes.STRING,
defaultValue: 'baz'
});
var location;
models.location.findById(locationId)
.then(function (data) {
location = data;
var replacement = models.location.build({});
// req.body = { someAttribute: 'value' }
_.assign(replacement, req.body);
return replacement.validate()
.then(function() {
return location.update(replacement.toJSON());
});
}
})
.then(function() {
res.send('success');
})
.catch(function (err) {
res.status(400).send({ error:err });
});
는 다음 유효성 검사 오류가 발생합니다.
_.assign(replacement, req.body, { requiredId: null });
replacement.validate().catch(function (err) {
// now I hit it
})
내가 모델의 새로운 인스턴스를 구축하고 때, sequelize이 설정되지 않은 필드를 확인하지 않는 것 같습니다.
replace
함수를 구현하여 구현하는 적절한 방법은 무엇입니까? 이전 인스턴스는 필수 필드와 선택적 필드에 대한 명시 적 값 또는 기본값을 포함하는 새 오브젝트로 대체되어야합니다.
var original = { locationId: 1, requiredId: 2, someAttribute: 'foo'};
var new = { locationId: 1, requiredId: 3};
models.location.replace(new);
// => { locationId: 1, requiredId: 3, someAttribute: 'baz' }