This commit is contained in:
2023-11-07 17:11:57 +08:00
commit 1358e52fdb
643 changed files with 84924 additions and 0 deletions
@@ -0,0 +1,54 @@
module.exports = {
/**
* 此函数名称
* @url template/db_api/user/pub/Promise.all 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
let dbName = "vk-test";
let runTime1 = new Date().getTime();
let addNum = 200;
console.log(new Date(runTime1),"开始运行,添加"+addNum+"条数据");
// 承载所有读操作的 promise 的数组
let tasks = [];
for(let i = 1; i <= addNum; i++){
let promise = vk.baseDao.add({
dbName:dbName,
dataJson:{
"money": 10.02+i,
"_add_time": 1597456395010+i,
"user_id": "001"
}
});
tasks.push(promise);
}
// 等待所有
let ids = [];
try {
res = await Promise.all(tasks).then((values) => {
return {
//ids:values,
total:values.length
};
});
} catch (e) {
//console.log("异常:",e,res);
console.log("异常:运行超时");
res.msg = "运行超时";
}
let runTime2 = new Date().getTime();
let runTime = (runTime2 - runTime1) / 1000 + "秒";
console.log(new Date(runTime2),"运行结束,耗时:"+runTime);
res.runTime = runTime;
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,40 @@
module.exports = {
/**
* 添加单条数据
* @url template/db_api/pub/add 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
let startTime = Date.now();
// 为了方便测试,这里固定在杭州市西湖区附近
let longitude = 120.12792 + Math.floor(Math.random() * 500) / 10000;
let latitude = 30.228932 + Math.floor(Math.random() * 500) / 10000;
// 随机定位结束-----------------------------------------------------------
res.id = await vk.baseDao.add({
dbName:"vk-test",
dataJson:{
"money": Math.floor(Math.random() * 9 + 1),
"user_id": "00"+Math.floor(Math.random() * 2 + 1),
"location":new db.Geo.Point(longitude, latitude),
"position":{
"longitude":longitude,
"latitude":latitude,
},
}
});
let endTime = Date.now();
res.runTime = (endTime - startTime);
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,50 @@
module.exports = {
/**
* 批量添加数据
* @url template/db_api/pub/adds 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
let dbName = "vk-test";
let startTime = Date.now();
let addNum = 10;
console.log("开始运行,添加"+addNum+"条数据");
// 承载所有读操作的 promise 的数组
let dataArr = [];
for(let i = 1; i <= addNum; i++){
// 随机定位开始-----------------------------------------------------------
// 为了方便测试,这里固定在杭州市西湖区附近
let longitude = 120.12792 + Math.floor(Math.random() * 500) / 10000;
let latitude = 30.228932 + Math.floor(Math.random() * 500) / 10000;
// 随机定位结束-----------------------------------------------------------
dataArr.push({
"money": Math.floor(Math.random() * 9 + 1),
"user_id": "00"+Math.floor(Math.random() * 2 + 1),
"location":new db.Geo.Point(longitude, latitude),
"position":{
"longitude":longitude,
"latitude":latitude,
},
});
}
await vk.baseDao.adds({
dbName:dbName,
dataJson:dataArr
});
let endTime = Date.now();
res.runTime = endTime - startTime;
console.log("运行结束,耗时:"+res.runTime/1000 + "秒");
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,27 @@
module.exports = {
/**
* avg求平均值
* @url template/db_api/pub/avg 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
res.avg = await vk.baseDao.avg({
dbName:"vk-test",
fieldName:"money",
whereJson:{
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,33 @@
module.exports = {
/**
* count求总记录条数
* @url template/db_api/pub/count 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
let startTime = Date.now();
res.num = await vk.baseDao.count({
dbName:"vk-test",
whereJson:{
}
});
let endTime = Date.now();
res.runTime = (endTime - startTime);
// 对应的sql:
// count * from vk-test
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,33 @@
module.exports = {
/**
* 数据删除
* @url template/db_api/pub/del 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
/**
* 这里为了防止误删,故vk.baseDao.del API
* 会判断如果whereJson为空,则不执行删除操作
* 所以这里加了个_id: _.exists(true)条件来达到删除全部的功能(实际开发时慎用删除全部功能)
*/
res.num = await vk.baseDao.del({
dbName:"vk-test",
whereJson:{
_id: _.exists(true)
}
});
// 对应的sql:
// delete from vk-test where user_id != '___'
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,25 @@
module.exports = {
/**
* 数据删除
* @url template/db_api/pub/del 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
let { _id } = data;
res.num = await vk.baseDao.deleteById({
dbName:"vk-test",
id:_id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,33 @@
module.exports = {
/**
* 根据id获取记录
* @url template/db_api/pub/findById 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
let startTime = Date.now();
res.item = await vk.baseDao.findById({
dbName:"vk-test",
id:data._id,
fieldJson:{
}
});
let endTime = Date.now();
res.runTime = (endTime - startTime);
// 上面的 fieldJson 可以设置 显示什么字段或设置不显示什么字段 如 money:false 代表不显示money字段
// 对应的sql:
// select * from vk-test where _id = "5f3a125b3d11c6000106d338"
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,38 @@
module.exports = {
/**
* 根据where条件获取单条记录(首条)
* @url template/db_api/pub/findByWhereJson 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
let startTime = Date.now();
res.item = await vk.baseDao.findByWhereJson({
dbName:"vk-test",
fieldJson:{
},
whereJson:{
_id:data._id,
}
});
let endTime = Date.now();
res.runTime = (endTime - startTime);
// 上面的 fieldJson 可以设置 显示什么字段或设置不显示什么字段 如 money:false 代表不显示money字段
// 对应的sql:
// select * from vk-test where _id = "5f3a125b3d11c6000106d338"
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,33 @@
module.exports = {
/**
* 根据地理位置获取列表数据信息
* @url template/db_api/pub/geo 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
res = await vk.baseDao.selects({
dbName:"vk-test",
pageIndex:1,
pageSize:100,
whereJson:{
location: _.geoNear({
geometry: new db.Geo.Point(120.12792, 30.228932), // 点的地理位置,为了方便测试,这里固定在杭州市西湖区
maxDistance: 4000, // 选填,最大距离,米为单位
minDistance: 0 ,// 选填,最小距离,米为单位
distanceMultiplier:1, // 返回时在距离上乘以该数字 1代表米 100 代表厘米 0.001 代表千米
distanceField:"distance", // 输出的每个记录中 distance 即是与给定点的距离
})
},
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,73 @@
module.exports = {
/**
* 查询多条记录 分页
* @url template/db_api/pub/getList 前端调用的url参数地址
* data 请求参数 说明
* @params {String} tableName 表名
* @params {String} addTime 搜索开始时间
* @params {String} endTime 搜索截止时间
* @params {String} searchvalue 搜索指定内容
* @params {Number} pageIndex 当前页码
* @params {Number} pageSize 每页显示数量
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : '' };
// 业务逻辑开始-----------------------------------------------------------
// 可写与数据库的交互逻辑等等
let { pageIndex, pageSize, searchvalue, timeArr = [], addTimeLong, endTimeLong, sortRule } = data;
let dbName = "vk-test";
let fieldJson = {};
let whereJson = {};
let sortArr = [];
// 排序规则开始-----------------------------------------------------------
sortArr.push({
"name":"_add_time",
"type":"desc"
});
if(sortRule) sortArr = sortRule;
// 排序规则结束-----------------------------------------------------------
// 查询条件开始-----------------------------------------------------------
if(searchvalue){
// 查询searchvalue开头的数据
try{
// 如果查询需要用到正则,建议将正则用try catch 包起来。
//whereJson["title"] = new RegExp('^'+searchvalue);
whereJson["money"] = Number(searchvalue);
}catch(err){
return { code : -1, msg : '请输入合法的查询内容' };
}
}
if(timeArr.length >=2 ){
addTimeLong = timeArr[0];
endTimeLong = timeArr[1];
}
if(addTimeLong && endTimeLong){
whereJson["_add_time"] = _.gte(addTimeLong).lte(endTimeLong);
}else if(addTimeLong && !endTimeLong){
whereJson["_add_time"] = _.gte(addTimeLong);
}else if(!addTimeLong && endTimeLong){
whereJson["_add_time"] = _.lte(endTimeLong);
}
// 这里可以写必须满足的查询条件,如whereJson["user_id"] = uid;代表只查自己的记录
// whereJson["user_id"] = uid;
// 查询条件结束-----------------------------------------------------------
res = await vk.baseDao.select({
dbName:dbName,
getCount:true,
pageIndex:pageIndex,
pageSize:pageSize,
fieldJson:fieldJson,
whereJson:whereJson,
sortArr:sortArr
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,38 @@
module.exports = {
/**
* 分组求count
* @url template/db_api/pub/groupCount 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
let { _id = "___" } = data;
res = await vk.baseDao.selects({
dbName: "vk-test",
pageIndex: 1,
pageSize: 10,
// 主表where条件
whereJson: {
},
groupJson: {
_id: "$money", // _id是分组id, $ 后面接字段名,如按money字段进行分组
count: _.$.addToSet("$user_id"), // $ 后面接字段名,如把user_id原样输出(去重)
},
sortArr: [{ name: "money",type: "desc" }], // 对分组后的结果进行排序
addFields:{
count: _.$.size("$count")
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,27 @@
module.exports = {
/**
* max求最大值
* @url template/db_api/pub/max 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
res.max = await vk.baseDao.max({
dbName:"vk-test",
fieldName:"money",
whereJson:{
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,27 @@
module.exports = {
/**
* min求最小值
* @url template/db_api/pub/min 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
res.min = await vk.baseDao.min({
dbName:"vk-test",
fieldName:"money",
whereJson:{
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,27 @@
module.exports = {
/**
* sample随机获取N条数据
* @url template/db_api/pub/sample 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
res.list = await vk.baseDao.sample({
dbName:"vk-test",
size:1,
whereJson:{
},
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,30 @@
module.exports = {
/**
* 查询多条记录
* @url template/db_api/pub/select 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk, db, _ } = util;
let { uid } = data;
let res = { code: 0, msg: 'ok' };
// 业务逻辑开始-----------------------------------------------------------
res = await vk.baseDao.select({
dbName: "vk-test",
getCount: true,
pageIndex: 1,
pageSize: 10,
whereJson: {
}
});
// 对应的sql:
// select * from vk-test limit 0,100;
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,50 @@
module.exports = {
/**
* 连表查询(仅限两表查询)(VK版本)
* @url template/db_api/pub/select2 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
// 想要两表以上的连接,请使用vk.baseDao.selects
res = await vk.baseDao.selects({
dbName:"uni-id-users",
foreignKey:"_id",
getCount:false,
pageIndex:1,
pageSize:10,
// 主表where条件
whereJson:{
},
// 主表字段显示规则
fieldJson:{token:false, password:false},
// 主表排序规则
sortArr:[{"name":"_id", "type":"desc"}],
// 副表列表
foreignDB:[
{
dbName:"vk-test",
foreignKey:"user_id",
as:"testList",
limit:1,
// 副表where条件
whereJson:{ },
// 副表字段显示规则
fieldJson:{ },
// 副表排序规则
sortArr:[{"name":"money", "type":"desc"}],
}
]
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,51 @@
module.exports = {
/**
* 多表查询(支持多张表连接查询)(VK版本)
* @url template/db_api/pub/selects 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
// 演示3表连接
res = await vk.baseDao.selects({
dbName:"uni-id-users",
getCount:false,
pageIndex:1,
pageSize:10,
// 主表where条件
whereJson:{
},
// 主表字段显示规则
fieldJson:{ token:false, password:false },
// 主表排序规则
sortArr:[{ "name":"_id", "type":"desc" }],
// 副表列表
foreignDB:[
{
dbName:"vk-test",
localKey:"_id",
foreignKey:"user_id",
as:"testList",
limit:1
},
{
dbName:"gy-shop",
localKey:"_id",
foreignKey:"user_id",
as:"shopList",
limit:1
},
]
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,47 @@
module.exports = {
/**
* 连表查询地理位置就近搜索示例
* @url template/db_api/pub/selects_geo 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
// 演示3表连接
res = await vk.baseDao.selects({
dbName:"vk-test",
getCount:true,
pageIndex:1,
pageSize:10,
// 主表where条件
whereJson:{
location: _.geoNear({
geometry: new db.Geo.Point(120.12792, 30.228932), // 点的地理位置,为了方便测试,这里固定在杭州市西湖区
maxDistance: 4000, // 选填,最大距离,米为单位
minDistance: 0 , // 选填,最小距离,米为单位
distanceMultiplier:1, // 返回时在距离上乘以该数字 1代表米 100 代表厘米 0.001 代表千米
distanceField:"distance", // 输出的每个记录中 distance 即是与给定点的距离
}),
money:_.gt(0)
},
// 副表列表
foreignDB:[
{
dbName:"uni-id-users",
localKey:"user_id",
foreignKey:"_id",
as:"userInfo",
limit:1
}
]
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,48 @@
module.exports = {
/**
* 连表查询,并返回第一条数据
* @url template/db_api/pub/selects_getOne 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
// 演示3表连接
res.info = await vk.baseDao.selects({
dbName:"uni-id-users",
getOne:true,
getMain:true,
// 主表where条件
whereJson:{
_id:"001"
},
// 主表字段显示规则
fieldJson:{ token:false, password:false },
// 副表列表
foreignDB:[
{
dbName:"vk-test",
localKey:"_id",
foreignKey:"user_id",
as:"testList",
limit:1
},
{
dbName:"gy-shop",
localKey:"_id",
foreignKey:"user_id",
as:"shopList",
limit:1
},
]
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,45 @@
module.exports = {
/**
* 多表查询
* @url template/db_api/pub/selects_inviter_uid 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk, db, _, $ } = util;
let { uid } = data;
let res = { code: 0, msg: 'ok' };
// 业务逻辑开始-----------------------------------------------------------
/**
* 此为演示 使用数组下标对应的值进行连表,如用户表根据inviter_uid的第一个值进行连表查出第一个上级的用户信息
*/
res = await vk.baseDao.selects({
dbName: "uni-id-users",
getCount: false,
pageIndex: 1,
pageSize: 5,
fieldJson: {
token: false,
password: false
},
// 副表列表
foreignDB: [{
dbName: "uni-id-users",
localKey: $.arrayElemAt(['$inviter_uid', 0]),
foreignKey: "_id",
as: "inviterUserInfo",
limit: 1,
fieldJson: {
token: false,
password: false
},
}]
});
console.log(11, res.rows);
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,43 @@
module.exports = {
/**
* 多表查询(支持多张表连接查询)(VK2.0版本)
* @url template/db_api/pub/selects_mode_2 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
/**
* 此为简化版
* 此版本支持无限张表和主表进行连接
*/
res = await vk.baseDao.selects({
dbName:"opendb-mall-comments",
// 副表列表
foreignDB:[
{
dbName:"opendb-mall-goods",
localKey:"goods_id",
foreignKey:"_id",
as:"goodsInfo",
limit:1
},
{
dbName:"uni-id-users",
localKey:"user_id",
foreignKey:"_id",
as:"userInfo",
limit:1
}
]
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,44 @@
module.exports = {
/**
* 多表查询(支持多张表连接查询)(VK3.0版本)
* @url template/db_api/pub/selects_mode_3 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
/**
* 此为演示竖向无限层连接
*/
res = await vk.baseDao.selects({
dbName:"opendb-mall-comments",
// 副表列表
foreignDB:[
{
dbName:"uni-id-users",
localKey:"user_id",
foreignKey:"_id",
as:"userInfo",
limit:1,
foreignDB:[
{
dbName:"opendb-mall-orders",
localKey:"_id",
foreignKey:"user_id",
as:"orderList",
limit:3,
},
]
}
]
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,29 @@
module.exports = {
/**
* sum求和
* @url template/db_api/pub/sum 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
res.sum = await vk.baseDao.sum({
dbName:"vk-test",
fieldName:"money",
whereJson:{
}
});
// 对应的sql:
// select sum(money) from vk-test
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,36 @@
'use strict';
module.exports = {
/**
* XXXnameXXX
* @url template/db_api/pub/tree 前端调用的url参数地址
* data 请求参数
* @param {String} params1 参数1
*/
main: async (event) => {
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
let { customUtil, uniID, config, pubFun, vk, db, _ } = util;
let { uid } = data;
let res = { code: 0, msg: "" };
// 业务逻辑开始-----------------------------------------------------------
res = await vk.baseDao.getTableData({
dbName: "opendb-admin-menus",
whereJson:{
enable: true,
parent_id: null
},
// 树状结构参数
treeProps: {
id: "menu_id", // 唯一标识字段,默认为 _id
parent_id: "parent_id", // 父级标识字段,默认为 parent_id
children: "children", // 自定义返回的下级字段名,默认为 children
level: 3, // 查询返回的树的最大层级。超过设定层级的节点不会返回。默认10级,最大15,最小1
limit: 500, // 每一级最大返回的数据。
whereJson: {
enable: true
}
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,30 @@
module.exports = {
/**
* 修改数据
* @url template/db_api/pub/update 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
let { _id = "___" } = data;
res.num = await vk.baseDao.update({
dbName:"vk-test",
whereJson:{
_id:_id,
},
dataJson:{
money:1
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,63 @@
module.exports = {
/**
* 修改数据,并返回修改后的数据
* @url template/db_api/pub/updateAndReturn 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk, db, _ } = util;
let { uid } = data;
let res = { code: 0, msg: 'ok' };
// 业务逻辑开始-----------------------------------------------------------
let { _id = "___" } = data;
// 非事务版本开始-----------------------------------------------------------
res.info = await vk.baseDao.updateAndReturn({
dbName: "vk-test",
whereJson: {
_id: _id
},
dataJson: {
money: _.inc(1)
},
});
// 非事务版本结束-----------------------------------------------------------
// 事务版本开始-----------------------------------------------------------
/*
const transaction = await vk.baseDao.startTransaction();
try {
res.info = await vk.baseDao.updateAndReturn({
db:transaction,
dbName:"vk-test",
whereJson:{
_id:_id
},
dataJson:{
money:_.inc(1)
},
});
// 提交事物
await transaction.commit();
console.log(`transaction succeeded`);
return res;
}catch (err) {
// 事务回滚
return await vk.baseDao.rollbackTransaction({
db:transaction,
err
});
}
*/
// 事务版本结束-----------------------------------------------------------
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,29 @@
module.exports = {
/**
* 修改数据,并返回修改后的数据
* @url template/db_api/pub/updateById 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, originalParam } = event;
let { uniID, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
let { _id = "___" } = data;
res.info = await vk.baseDao.updateById({
dbName:"vk-test",
id:_id,
dataJson:{
money:1
},
getUpdateData:true
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,33 @@
module.exports = {
/**
* 添加单条数据
* @url template/db_api/sys/add 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
let { customUtil, uniID, config, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
let {
user_id,
money,
remark,
} = data;
let dbName = "vk-test";
res.id = await vk.baseDao.add({
dbName,
dataJson:{
user_id,
money,
remark,
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,30 @@
module.exports = {
/**
* 数据删除
* @url template/db_api/sys/delete 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
let { customUtil, uniID, config, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
// 这里id不传默认设置成"___" 是为了防止因未传_id导致误删所有数据.
let { _id } = data;
if(vk.pubfn.isNull(_id)){
return { code : -1, msg : 'id不能为空' };
}
let dbName = "vk-test";
await vk.baseDao.deleteById({
dbName,
id:_id
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
@@ -0,0 +1,30 @@
module.exports = {
/**
* 查询多条记录 分页
* @url template/db_api/sys/getList 前端调用的url参数地址
* data 请求参数 说明
* @params {Number} pageIndex 当前页码
* @params {Number} pageSize 每页显示数量
* @params {Array<Object>} sortRule 排序规则
* @params {object} formData 查询条件数据源
* @params {Array<Object>} columns 查询条件规则
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
let { customUtil, uniID, config, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : '' };
// 业务逻辑开始-----------------------------------------------------------
// 可写与数据库的交互逻辑等等
let dbName = "vk-test";
res = await vk.baseDao.getTableData({
dbName,
data
});
return res;
}
}
@@ -0,0 +1,39 @@
module.exports = {
/**
* 修改数据
* @url template/db_api/sys/update 前端调用的url参数地址
* data 请求参数 说明
* res 返回参数说明
* @params {Number} code 错误码,0表示成功
* @params {String} msg 详细信息
*/
main: async (event) => {
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
let { customUtil, uniID, config, pubFun, vk , db, _ } = util;
let { uid } = data;
let res = { code : 0, msg : 'ok' };
// 业务逻辑开始-----------------------------------------------------------
let {
_id,
user_id,
money,
remark,
} = data;
if(vk.pubfn.isNullOne(_id)){
return { code : -1, msg : '参数错误' };
}
let dbName = "vk-test";
await vk.baseDao.updateById({
dbName,
id:_id,
dataJson:{
user_id,
money,
remark,
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}