| 
					
				 | 
			
			
				@@ -101,9 +101,55 @@ main(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 其他示例可以参考项目: <https://github.com/shiwangme/mysql8-x-devapi-demo> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+## Tips 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### Count / 记录总数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Collection 总记录数: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+```js 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const session = await mysqlx.getSession().then((session) => session.getSchema('SCHEMA_NAME').getCollection('COLLECTION_NAME')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const total = await session.count(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+根据条件查询的结果条数: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+```js 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const counter = await session.find().fields(['COUNT(1) as count']).execute(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const total = counter.fetchOne().count; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+### Pagination / 分页 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+以 `Koa` 分页请求为例: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+```js 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const { page, size } = ctx.query; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const session = await Card.getSession(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 计算页数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// const counter = await session.find().fields(['COUNT(1) as count']).execute(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// const total = counter.fetchOne().count; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const total = await session.count(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const pages = Math.ceil(total / size); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 执行 Select 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const query = session 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .find() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .sort(['$.created_at DESC']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .limit(size) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .offset((page - 1) * size); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const result = await query.execute(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const list = result.fetchAll(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ctx.success({ page, size, total, pages, list }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+``` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ## Model 封装 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-封装 `Add`、`Modify`、`Remove`和`getSession`,不包含 `Find `。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+封装 `Add`、`Modify`、`Remove`、`FindOne`和`getSession`,不包含 `Find `。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ### Utils.js 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -176,6 +222,17 @@ class Model { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async findOne(key, val) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const session = await mysqlx.getSession(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const db = session.getSchema(DB_NAME).getCollection(this.TABLE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return db 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      .find(`${key} = :${key}`) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      .bind(key, val) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      .limit(1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      .execute() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      .then((x) => x.fetchOne()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   async modify(id, item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const session = await mysqlx.getSession(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const db = session.getSchema(DB_NAME).getCollection(this.TABLE); 
			 |