首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Baqend onUpdate处理器

Baqend onUpdate处理器
EN

Stack Overflow用户
提问于 2017-12-27 04:40:57
回答 2查看 60关注 0票数 1

执行partialupdate()会导致数据类onUpdate Handler中的代码运行吗?

数据类中有这样的设置:

代码语言:javascript
复制
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具有查询和更新班次数据类的权限)

但是,当我做partialupdate()时,我会得到零日志。我是否需要对对象进行真正的更新( query...load )、修改数据、更新()?

而且,这段代码似乎会导致partialupdate()完全不运行,但是当我删除处理程序时,它又开始工作了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-27 10:31:56

是的,这是目前未实现的特性,因为部分更新不能执行onUpdate处理程序,因为没有可以传递给更新处理程序的对象。

另一方面,部分更新不能直接执行,因为这将导致安全问题(因为您的onUpdate处理程序可以包含验证代码等等)。

因此,我们目前拒绝对具有onUpdate处理程序的类进行任何部分更新,因为没有一种方法可以根据您的onUpdate代码实际验证部分更新。

我们计划您可以定义一个额外的onPartial处理程序,在执行partialUpdate之前可以采取一些额外的步骤。但该处理程序将只获得部分更新,而不是对象本身。

票数 1
EN

Stack Overflow用户

发布于 2017-12-27 05:01:49

我确信partialupdate()不会导致onUpdate处理程序运行。

当我放入日志行并使用网站数据管理器编辑记录时,它会按预期进行日志记录。没什么大不了的,我只需要重写查询就可以得到完整的更新。

但是,在其中包含任何代码都会破坏partialupdate(),这是不好的。

下面是我使用的代码,只要onUpdateHandler中没有任何内容,这些代码就能工作:

代码语言:javascript
复制
  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)
    })
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47986408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档