在模型 PUT 上,我需要根据其原始值进行自定义验证。在 beforeUpdate 模型钩子中,我可以通过“this”关键字访问“next”函数、“请求主体”对象(作为 beforeUpdate 参数)和更新模型本身。
有没有办法在不从数据库查询的情况下获得原始模型或其更改?
甚至可以在模型钩子中更新当前模型(因为更改“this”属性不会生效)?
在模型 PUT 上,我需要根据其原始值进行自定义验证。在 beforeUpdate 模型钩子中,我可以通过“this”关键字访问“next”函数、“请求主体”对象(作为 beforeUpdate 参数)和更新模型本身。
有没有办法在不从数据库查询的情况下获得原始模型或其更改?
甚至可以在模型钩子中更新当前模型(因为更改“this”属性不会生效)?
免责声明:我是 LoopBack 开发人员。
有没有办法在不从数据库查询的情况下获得原始模型或其更改?
不,那是不可能的。
看一下loopback-datasource-juggler/lib/dao.jsupdateAttributes()
中的代码,当你发出请求时会调用它:PUT /models/:id
inst.setAttributes(data);
inst.isValid(function (valid) {
if (!valid) {
if (cb) {
cb(new ValidationError(inst), inst);
}
} else {
inst.trigger('save', function (saveDone) {
inst.trigger('update', function (done) {
// etc.
在执行任何钩子之前更新模型。