UNPKG

2.1 kBMarkdownView Raw
1# assistant
2
3## 概述
4
5assistant 系列类用于将**用户对象**的指定字段扩展为JSON对象,并对其进行综合管理。
6
7assistant 以JSON格式从数据库读取字段值,将其转化为内存对象,当数据发生变化时,自动将字段序列化成字符串并写入数据库
8
9## 目录结构
10
11所有用户自定义 assistant 类集中存储于 /app/model/assistant 目录中。
12
13## 编写 assistant
14```js
15const facade = require('gamecloud');
16
17class task extends facade.Assistant {
18 /**
19 * 构造函数
20 * @param {BaseUserEntity} parent 用户角色对象
21 */
22 constructor(parent) {
23 super(parent, 'task'); //指定 task 扩展角色表中的'task'字段为JSON对象
24 }
25
26 /**
27 * 获取序列化字符串,同时复位脏数据标志
28 * @note 基类已实现,可重载
29 */
30 ToString(){
31 this.dirty = false;
32 return JSON.stringify(this.v);
33 }
34
35 /**
36 * 利用来自持久化层的数据进行初始化
37 * @note 基类已实现,可重载
38 */
39 LoadData (val) {
40 try {
41 this.v = (!val||val == "" ) ? {} : JSON.parse(val);
42 }
43 catch(e){
44 this.v = {};
45 }
46 }
47
48 /**
49 * 获取JSON对象中的属性值
50 * @note 基类已实现,可重载
51 */
52 GetRecord($type){
53 return this.v[$type] || 0;
54 }
55 /**
56 * 获取JSON对象中的属性值
57 * @note 基类已实现,可重载
58 */
59 SetRecord($type, val){
60 this.v[$type] = val || 0;
61 this.dirty = true; //该数值会被系统自动监测到从而引发自动存储
62 }
63}
64```
65
66## 使用 assistant
67
68在用户登录、创建角色(user)时,所有的 assistant 将被自动创建新的实例并放入 user.baseMgr 中, 例如:
69
70```js
71//调用 assistant 的实例 user.baseMgr.task 的接口方法 Execute,为用户登记任务完成记录:'达成通关新的关卡'
72user.baseMgr.task.Execute(em_Condition_Type.gateMaxNo, 1, em_Condition_Checkmode.add);
73```