Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • J jz-api-core
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Deployments
    • Deployments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Repository
    • Value stream
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • jizhi-backend
  • jz-api-core
  • Wiki
  • jz backend project skeleton

jz backend project skeleton · Changes

Page history
xigua created page: jz backend project skeleton authored Jul 16, 2017 by xigua's avatar xigua
Show whitespace changes
Inline Side-by-side
Showing with 23 additions and 2 deletions
+23 -2
  • jz-backend-project-skeleton.md jz-backend-project-skeleton.md +23 -2
  • No files found.
jz-backend-project-skeleton.md
View page @ adb474e4
......@@ -20,5 +20,26 @@
- fixture.ts - 系统启动时自动调用的,主要用户创建默认admin用户
- helper.ts - 一些辅助功能逻辑
- userService.ts - 一些可以修改的用户相关逻辑,比如用户登录,修改密码等
- routers - 绝大部分API都是通过graphql,只有少数在routers目录下建立新目录,现在的file.ts用于文件上传
- routers - 绝大部分API都是通过graphql,只有少数在routers目录下建立新目录,现在的file.ts用于文件上传,可以配合oss使用
- index.ts - main文件,一般不需要修改
# 项目开发指南
- 一般的项目框架生成之后,在后端宝指定数据表的名称和字段,后端宝会自动在dbschema目录下生成对应的json描述文件,用于与mongoose hookup到一起
- 后端宝还会在graphql目录下生成对应的graphql文件,一般项目自定义的graphql query和mutation应定义在__custom.ts文件中
- 大部分业务逻辑可以通过编写entity的hook来实现,系统提供了以下hook类型,所有hook都有resolve,reject,result,err, context这五个参数。其中resolve必须保证在希望继续的分支下进行调用,reject必须在出错的分支下进行调用,result指代调用的参数object或者查询的结果。context是执行上下文object,具体参考jz-api-core文档中的描述
- BeforeQueryItem - 根据id获取某实例前
- AfterQueryItem - 根据id获取某实例前
- BeforeQueryList - 查询entity列表前
- AfterQueryList - 获取entity列表之后,这时result就是要返回的entity list对象
- BeforeSave - 保存前,这时result是当前将要被保存到数据库的object
- AfterSave - 保存成功之后,result是被保存成功的对象
- BeforeUpdate - 到数据库更新entity之前
- AfterUpdate - 到数据库更新entity之后
- 具体的某个entity的写法就是在这8个hook前加上entity type的名字,比如 blogBeforeSave, messageAfterSave,下面是一个例子
```
export const messageBeforeSave = (resolve, reject, result, err, context: Common.Context) => {
let me = context.me;
result['fromUserId'] = me._id;
resolve(result);
}
```
\ No newline at end of file
Clone repository
  • Home
  • jz backend project skeleton