diff --git a/docs/cores/packages/database.md b/docs/cores/packages/database.md index df90d18a4..6a9a1b8ce 100644 --- a/docs/cores/packages/database.md +++ b/docs/cores/packages/database.md @@ -552,6 +552,7 @@ registerModel('test', Test); db.table({ name: 'tests', + model: 'test', }); const Test = db.getModel('tests'); @@ -593,7 +594,7 @@ database.import({ database.isDefined('foos'); // false ``` -### Operator.register 实验性 +### Operator.register 实验性 待完善 注册自定义 op @@ -672,11 +673,10 @@ db.extend({ }); ``` - -datatable.table 用于初始化,datatable.extend 用于处理扩展,需要存在 table 已存在。 + +database.table 用于初始化,database.extend 用于处理扩展,需要 table 已存在。 - ### database.isDefined 判断数据表是否已定义 @@ -740,12 +740,12 @@ await db.sync({ 更多参数参考 [Sequelize.sync](https://github.com/sequelize/sequelize/blob/5b16b32259f0599a6af2d1eb625622da9054265e/types/lib/sequelize.d.ts#L45) - + -- datatable.sync:所有已配置表同步,可以指定 tables 范围 +- database.sync:所有已配置表同步,可以指定 tables 范围 - table.sync:当前表同步,如果有关系字段,关系表也会处理 - sequelize.sync:所有 sequelize.models 同步 -- Model.sync 只处理某个 Model.attributes 同步 +- Model.sync 只处理某个 Model.attributes 同步,并不处理关系 Model 的情况 @@ -802,7 +802,7 @@ const fields = table.getOptions('fields'); ### table.addField -新增字段(附加操作) +新增字段(附加操作),字段的配置参考 [Field Types](#field-types) ```ts const table = db.table({ @@ -1020,7 +1020,7 @@ await post.updateAssociations({ { id: 1, status: 'publish', - user: { // 关系数据,可能需要查询之后获取 + user: { // 关系数据,可能需要异步获取 id: 1, email: 'admin@example.com' }, diff --git a/docs/cores/packages/migrator.md b/docs/cores/packages/migrator.md new file mode 100644 index 000000000..a3a955bdd --- /dev/null +++ b/docs/cores/packages/migrator.md @@ -0,0 +1,20 @@ +--- +title: '@nocobase/migrator' +order: 8 +# toc: menu +--- + +# @nocobase/migrate 未实现 + +NocoBase 的 Database 是基于 Sequelize,Sequelize 虽然提供了 sequelize-cli,包括 migrations 和 seeders 但是并不适用于 NocoBase。 + +- Sequelize 的 migration 只有 queryInterface,但是 NocoBase 考虑的更多是配置层面问题 +- 要考虑 Upgrade 层面的问题,比如 0.3 升级 0.6、0.4 升级 0.6、0.5 升级 0.6 等等一系列问题 +- 需要考虑插件里的 migrations + +目前已知的开源项目里,Ghost 团队实现的 [knex-migrator](https://github.com/TryGhost/knex-migrator) 非常接近我们的需求。Ghost 的 [migrations](https://github.com/TryGhost/Ghost/tree/v4.2.2/core/server/data/migrations) 例子。 + +虽然非常接近,但也存在一些差异: + +- NocoBase 的 database 用的是 Sequelize 而不是 Knex +- NocoBase 的配置更复杂,我们要为此提供一些简易的 API 辅助完成 migrate diff --git a/docs/cores/packages/resourcer.md b/docs/cores/packages/resourcer.md index 74fae89b4..1caaa7903 100644 --- a/docs/cores/packages/resourcer.md +++ b/docs/cores/packages/resourcer.md @@ -68,7 +68,7 @@ api.resource('users').login({ }); ``` - + Resourcer 是基于资源设计的,可以看做是 REST 的扩展(兼容的同时,但有些许不同),提供了类 REST 的 Resource Action API([点此查看细节](#resourcerkoarestapimiddleware)),非常灵活,同时弥补了 REST 的一些缺陷。不用 GraphQL 的原因是因为还不够完善,尤其为了追求 GraphQL 需要写很多代码,并不适合作为常规 API 开放给大众。后续如果反应强烈会考虑适配 GraphQL,其他感兴趣的开发也可以自由发挥,来完善 GraphQL API。 @@ -260,7 +260,7 @@ resourcer.define({ 判断资源是否已定义 -### resourcer.koaRestApiMiddleware +### resourcer.koaRestApiMiddleware 待完善 原 resourcer.middleware @@ -445,12 +445,12 @@ POST /api/users:login -在 Resource Action API 的设计理念里,即使类似 login、register、logout 等非标准的 REST API 也可以非常方便的扩展。大家可以更专注于 action 本身,而不必纠结于 request method 和 route 应该如何设计,也不需要考虑 routes 优先级等问题。 +在 Resource Action API 的设计理念里,即使类似 login、register、logout 等非标准的 REST API 也可以非常方便的扩展。大家可以更专注于 action 本身,而不必纠结于 request method 和 route 应该如何设计或派发,也不需要考虑 routes 优先级等问题。 -### resourcer.registerAction(name: ActionName, options: ActionOptions) +### resourcer.registerAction(name: ActionName, options: ActionOptions) 待完善 原 resourcer.registerActionHandler @@ -518,7 +518,7 @@ resourcer.use(async (ctx, next) => { }); ``` -### resourcer.registerActions(actions) +### resourcer.registerActions(actions) 待完善 原 resourcer.registerActionHandlers @@ -549,6 +549,13 @@ resourcer.registerActions({ 注册 resourcer 全局 middleware +```ts +resourcer.use(async (ctx, next) => { + // code... + await next(); +}) +``` + 虽然大部分框架都提供了中间件,但是中间件的执行顺序(优先级)依赖于编码顺序,这种方式非常不利于插件化管理。因此,在 Resourcer 设计思想里,将中间件做了分层,不同层级的 middlewares 不依赖于编码顺序,而是如下顺序: @@ -558,6 +565,6 @@ resourcer.registerActions({ 3. 再次,resource 层(每个资源独立):`resourcer.registerActionMiddleware` 4. 最后,action 层:`resourcer.registerResourceMiddleware` -不过,每个层次的中间件执行顺序还依赖于编码顺序,如有需要再进行更细微的改进。 +不过,每层的中间件执行顺序还依赖于编码顺序,如有需要再进行更细微的改进。 \ No newline at end of file diff --git a/docs/cores/packages/sdk.md b/docs/cores/packages/sdk.md index b91cb5e4a..f9c7e8911 100644 --- a/docs/cores/packages/sdk.md +++ b/docs/cores/packages/sdk.md @@ -4,7 +4,7 @@ order: 3 # toc: menu --- -# @nocobase/sdk +# @nocobase/sdk 待完善 ## 介绍 diff --git a/docs/cores/packages/test.md b/docs/cores/packages/test.md index 9a60b61fe..3b496a843 100644 --- a/docs/cores/packages/test.md +++ b/docs/cores/packages/test.md @@ -3,7 +3,7 @@ title: '@nocobase/test' order: 7 --- -# @nocobase/test +# @nocobase/test 未实现 ## mockDatabase