后端 onUpdate 处理程序
Baqend onUpdate Handler
执行 partialupdate()
会导致数据 class' onUpdate 处理程序中的代码到 运行 吗?
我在数据中有这个设置 class:
exports.onUpdate = function(db, obj) {
DB.log.info(obj.ShiftID);
db.Shifts.load(obj.ShiftID)
.then((Shift) => {
DB.log.info(Shift);
if (Shift.User == db.User.me) {
Shift.User = null;
Shift.status = 0;
return Shift.update();
}
})
};
(是的,节点的角色 2 有权查询和更新班次数据 class)
但是当我进行 partialupdate() 时,我得到的日志为零。我是否需要进行真正的更新查询...加载对象、修改数据、update()?
此外,这段代码似乎导致 partialupdate() 根本没有 运行,但是当我删除处理程序时,它又开始工作了。
我很确定 partialupdate() 不会导致 onUpdate 处理程序 运行。
当我放入日志行并使用网站数据管理器编辑记录时,它会按预期进行记录。没什么大不了的,我可以将查询重写为完整更新。
但是其中的任何代码都会破坏 partialupdate(),这并不好。
这是我正在使用的代码,只要 onUpdateHandler 中没有任何内容,它就可以工作:
requestShift(shiftID) {
db.ready().then((db) => {
db.Applicants.find()
.where({
"shiftID": { "$in": [shiftID] },
})
.singleResult((applicants) => {
return applicants.partialUpdate()
.add("applicants", db.User.me.id)
.add("photos", this.props.UserData.photo)
.execute()
})
Alert.alert(
'Confirmation',
'Shift has been requested.',
)
this.props.navigation.dispatch(goToFindShifts)
})
}
是的,这是目前未实现的功能,因为部分更新无法执行 onUpdate 处理程序,因为没有可传递给更新处理程序的对象。
另一方面,不能直接执行部分更新,因为这会导致安全问题(因为您的 onUpdate 处理程序可以包含验证代码等)
因此,我们目前拒绝对具有 onUpdate 处理程序的 class 进行任何部分更新,因为不存在我们可以根据您的 onUpdate 代码实际验证部分更新的方法。
我们计划您可以定义一个额外的 onPartial 处理程序,您可以在执行 partialUpdate 之前执行一些额外的步骤。但是该处理程序只会获得部分更新,而不是对象本身。
执行 partialupdate()
会导致数据 class' onUpdate 处理程序中的代码到 运行 吗?
我在数据中有这个设置 class:
exports.onUpdate = function(db, obj) {
DB.log.info(obj.ShiftID);
db.Shifts.load(obj.ShiftID)
.then((Shift) => {
DB.log.info(Shift);
if (Shift.User == db.User.me) {
Shift.User = null;
Shift.status = 0;
return Shift.update();
}
})
};
(是的,节点的角色 2 有权查询和更新班次数据 class)
但是当我进行 partialupdate() 时,我得到的日志为零。我是否需要进行真正的更新查询...加载对象、修改数据、update()?
此外,这段代码似乎导致 partialupdate() 根本没有 运行,但是当我删除处理程序时,它又开始工作了。
我很确定 partialupdate() 不会导致 onUpdate 处理程序 运行。
当我放入日志行并使用网站数据管理器编辑记录时,它会按预期进行记录。没什么大不了的,我可以将查询重写为完整更新。
但是其中的任何代码都会破坏 partialupdate(),这并不好。
这是我正在使用的代码,只要 onUpdateHandler 中没有任何内容,它就可以工作:
requestShift(shiftID) {
db.ready().then((db) => {
db.Applicants.find()
.where({
"shiftID": { "$in": [shiftID] },
})
.singleResult((applicants) => {
return applicants.partialUpdate()
.add("applicants", db.User.me.id)
.add("photos", this.props.UserData.photo)
.execute()
})
Alert.alert(
'Confirmation',
'Shift has been requested.',
)
this.props.navigation.dispatch(goToFindShifts)
})
}
是的,这是目前未实现的功能,因为部分更新无法执行 onUpdate 处理程序,因为没有可传递给更新处理程序的对象。
另一方面,不能直接执行部分更新,因为这会导致安全问题(因为您的 onUpdate 处理程序可以包含验证代码等)
因此,我们目前拒绝对具有 onUpdate 处理程序的 class 进行任何部分更新,因为不存在我们可以根据您的 onUpdate 代码实际验证部分更新的方法。
我们计划您可以定义一个额外的 onPartial 处理程序,您可以在执行 partialUpdate 之前执行一些额外的步骤。但是该处理程序只会获得部分更新,而不是对象本身。