UNPKG

gamecloud

Version:
74 lines (56 loc) 2.28 kB
# 模型管理 ## 概述 gamecloud 的模型管理为数据库表提供了一种面向对象的管理范式,这种范式是在 ORM 层面上进一步封装而成的 所有的用户自定义模型位于 app/model 目录下,分为 table 和 entity,其中 table 直接映射数据库表,entity映射orm对象 ## 建立 orm 模型 下面以新增 test 表为例,描述建立 orm 模型的详细步骤 1. 新增 db-migrate 迁移文件 20191111062616-create-test.js 2. 执行 db-migrage 计划,自动生成 test 表结构 ```bash npm run commit ``` 3. 新增表映射文件 app/model/table/test.js 4. 新增ORM映射文件 app/model/entity/testEntity.js **注意要为新增实体设立一个唯一编号,本案中为 101** ```js static get mapParams(){ return { model: Test, //对应数据库表的映射类 entity: this, //ORM映射类,在表映射类上做了多种业务封装 etype: 101, //实体类型 group: 'item', //(可选)对记录进行分组的键名称 }; } ``` 5. 将新增表加入自动加载列表中 ```js facade.boot({ env: env, loading: [ 101, //指示加载 test 表 ], }); ``` ## CURD ```js let entityType = 101; lit id = 1; //创建新的条目 let record = await facade.current.GetMapping(entityType).Create(); //根据id查找表中记录 record = facade.current.GetObject(entityType, id); //修改记录中指定字段,底层机制会确保自动保存至数据库 record.setAttr('item', Math.random().toString()); //删除指定记录 let db = true; // 表示同时从数据库删除 facade.current.GetMapping(entityType).Delete(id, db); //分页列表 let page = 1; let result = facade.current.GetMapping(entityType) //得到 Mapping 对象 .groupOf() //将 Mapping 转化为 Collection,如果 Mapping 支持分组,可以带分组参数调用 .orderby('id', 'desc') //根据id字段倒叙排列 .paginate(5, page, ['id', 'item']); //每页5条,显示第1页,只选取'id'和'item'字段 ```