倒数第二天

终於到了倒数第二天

现在一直在努力的写前後端的程序码跟串接

在前端 RxDB 中有一些 Middleware 和 hook 可以使用

所以还是要先了解一下相关的生命周期

RxDB 没有验证的 hook

因为在基本验证的部分会在 Schema 处理

使用情境

  • 复杂的验证
  • 删除有相依性的 Record
  • 非同步的 default 设定
  • 触发非同步 task
  • 触发客制化 Events
  • 通知其他服务

plainData 原始资料

RxDocument RxDocument 物件

Insert

Insert 新增一笔 Record 的时候

preInsert

建立新的 Record 前触发

preInert(cb(plainData), boolean)

  • cb
    • 非同步的 function 可以回传 Promise 进行非同步行为
  • Boolean
    • 是否要和 Insert 同时进行 (true: 并行, false: 先执行完之後再新增)

postInsert

建立新的 Record 後触发

preInert(cb(plainData, RxDocuemnt), boolean)

  • cb
    • 非同步的 function 可以回传 Promise 进行非同步行为
  • Boolean
    • 是否要和 Insert 同时进行 (true: 并行, false: 先执行完之後再新增)

Save Hook

RxDocuemnt.save 被呼叫 或是修改的时候

preSave

preSave(cb(plainData, RxDocuemnt), boolean)

  • cb
    • 非同步的 function 可以回传 Promise 进行非同步行为
  • Boolean
    • 是否要和 Insert 同时进行 (true: 并行, false: 先执行完之後再新增)

postSave

postSave(cb(plainData, RxDocuemnt), boolean)

  • cb
    • 非同步的 function 可以回传 Promise 进行非同步行为
  • Boolean
    • 是否要和 Insert 同时进行 (true: 并行, false: 先执行完之後再新增)

Remove

preRemove

preRemove(cb(plainData, RxDocuemnt), boolean)

  • cb
    • 非同步的 function 可以回传 Promise 进行非同步行为
  • Boolean
    • 是否要和 Insert 同时进行 (true: 并行, false: 先执行完之後再新增)

postRemove

postRemove(cb(plainData, RxDocuemnt), boolean)

  • cb
    • 非同步的 function 可以回传 Promise 进行非同步行为
  • Boolean
    • 是否要和 Insert 同时进行 (true: 并行, false: 先执行完之後再新增)

特殊 hook

postCreate

这个 hook 会被所有的 RxDocuemnt 建立的时候被呼叫

可以被在中间放入各种客制化的资料

但是这个 hook 不能够使用非同步

myCollection.postCreate(function(plainData, rxDocument){
    Object.defineProperty(rxDocument, 'myField', {
        get: () => 'foobar',
    });
});

const doc = await myCollection.findOne().exec();

console.log(doc.myField);
// 'foobar'

参考资料

Middleware and hook


<<:  javasScript 进阶笔记二 (object.prototype.call)

>>:  Day 32:来呼叫星战 Profile List 下一页吧(1/2)

不知道有没有人可以帮我解答一下T_T

基於上一篇我认为要再多练习各网站的爬虫,所以我再次挑战上篇失败的爬虫,但是还是爬不出东西,不知道是我...

知识从画画基础练起

会画画的人,在某些工作上会不会有加分,答案是有的,但绝不能立即想到是「美编」这个职务,或者「插画师」...

Day24 让你的k8s Pod 具备多介面功能 - 实做篇

昨天简述了关於Multus CNI的使用需求和架构,今天我们来介绍Multus的环境建置和测试,此次...

Day 30 - 课程统整&心得

最後一天了,当然来点松愉快的课程统整还有最重要的心得啦! 课程统整 Day 1~5 这几天我们学会了...

DAY28: 光速了解与操作NVM

NVM与NPM虽然差一个字,但两者兼具着不同的工作。 NVM全名Node Version Manag...