UNPKG

minapp-fetch

Version:
213 lines (212 loc) 9.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const constants_1 = require("../constants/constants"); const error_1 = require("../constants/error"); const utils_1 = require("./utils"); function updateTrans(params, operate, minapp) { //BaaS平台 if (constants_1.PLATFORM_NAME_BAAS.indexOf(minapp) > -1) { for (let pa in params) { if (!utils_1.isArray(params[pa])) { //不是数组,则直接 set operate.set(pa, params[pa]); continue; } if (constants_1.UPDATE_METHORD.indexOf(params[pa][0]) > -1) { switch (params[pa][0]) { case 'set': operate.set(pa, params[pa][1]); break; case 'geo': let temp = params[pa], tempGeo = {}; temp.shift(); if (temp.length > 1) { tempGeo = utils_1.cloneDeep({ type: 'Polygon', coordinates: [temp] }); } else { tempGeo = utils_1.cloneDeep({ type: 'Point', coordinates: temp[0] }); } operate.set(pa, tempGeo); break; case 'unset': operate.unset(pa); break; case 'incr': operate.incrementBy(pa, params[pa][1]); break; case 'append': operate.append(pa, utils_1.isArray(params[pa][1]) ? params[pa][1] : [params[pa][1]]); break; case 'uAppend': operate.uAppend(pa, utils_1.isArray(params[pa][1]) ? params[pa][1] : [params[pa][1]]); break; case 'remove': operate.remove(pa, utils_1.isArray(params[pa][1]) ? params[pa][1] : [params[pa][1]]); break; case 'pop': operate.append(pa); break; case 'shift': operate.append(pa); break; case 'patchObject': operate.patchObject(pa, params[pa][1]); break; default: throw new Error(error_1.UPDATE_ERROR); } } else { //直接 set operate.set(pa, params[pa]); } } } //Mongo 类平台 if (constants_1.PLATFORM_NAME_MONGO_SERVER.indexOf(minapp) > -1) { if (minapp === constants_1.PLATFORM_NAME.WX_WEAPP || minapp === constants_1.PLATFORM_NAME.WX_CLOUD || minapp === constants_1.PLATFORM_NAME.UNI_CLOUD) { //此处的operate是操作方法 let tempParams = {}; for (let pa in params) { if (!utils_1.isArray(params[pa])) { //不是数组,则直接 set tempParams[pa] = operate.set(params[pa]); continue; } if (constants_1.UPDATE_METHORD.indexOf(params[pa][0]) > -1) { switch (params[pa][0]) { case 'set': tempParams[pa] = operate.set(params[pa][1]); break; case 'geo': let temp2 = params[pa], tempGeo = {}; temp2.shift(); if (temp2.length > 1) { tempGeo = utils_1.cloneDeep({ type: 'Polygon', coordinates: [temp2] }); } else { tempGeo = utils_1.cloneDeep({ type: 'Point', coordinates: temp2[0] }); } tempParams[pa] = operate.set(tempGeo); break; case 'unset': tempParams[pa] = operate.remove(); break; case 'incr': tempParams[pa] = operate.inc(params[pa][1]); break; case 'append': tempParams[pa] = operate.push(utils_1.isArray(params[pa][1]) ? params[pa][1] : [params[pa][1]]); break; case 'uAppend': if (utils_1.isArray(params[pa][1])) { tempParams[pa] = operate.addToSet({ each: utils_1.isArray(params[pa][1]) ? params[pa][1] : [params[pa][1]] }); } else { tempParams[pa] = operate.addToSet(params[pa][1]); } break; case 'remove': tempParams[pa] = operate.pull(operate.in(utils_1.isArray(params[pa][1]) ? params[pa][1] : [params[pa][1]])); break; case 'patchObject': tempParams[pa] = params[pa][1]; break; default: throw new Error(error_1.UPDATE_ERROR); } } else { //直接 set tempParams[pa] = operate.set(params[pa]); } } operate = tempParams; } } //webapi op if (minapp === constants_1.PLATFORM_NAME.ZX_WEBAPI || minapp === constants_1.PLATFORM_NAME.ZX_OP) { for (let pa in params) { if (!utils_1.isArray(params[pa])) { //不是数组,则直接 set operate[pa] = params[pa]; continue; } if (constants_1.UPDATE_METHORD.indexOf(params[pa][0]) > -1) { switch (params[pa][0]) { case 'set': operate[pa] = params[pa][1]; break; case 'geo': let temp = params[pa], tempGeo = {}; temp.shift(); if (temp.length > 1) { tempGeo = utils_1.cloneDeep({ type: 'Polygon', coordinates: [temp] }); } else { tempGeo = utils_1.cloneDeep({ type: 'Point', coordinates: temp[0] }); } operate[pa] = tempGeo; break; case 'unset': operate[pa] = {}; operate[pa]['$unset'] = ''; break; case 'incr': operate[pa] = {}; operate[pa]['$incr_by'] = params[pa][1]; break; case 'append': operate[pa] = {}; operate[pa]['$append'] = utils_1.isArray(params[pa][1]) ? params[pa][1] : [params[pa][1]]; break; case 'uAppend': operate[pa] = {}; operate[pa]['$append_unique'] = utils_1.isArray(params[pa][1]) ? params[pa][1] : [params[pa][1]]; break; case 'remove': operate[pa] = {}; operate[pa]['$remove'] = utils_1.isArray(params[pa][1]) ? params[pa][1] : [params[pa][1]]; break; case 'patchObject': operate[pa] = {}; operate[pa]['$update'] = params[pa][1]; break; case 'currentDate': //break throw new Error(`currentDate新增:${error_1.METHOD_NOT_SUPPORT}`); default: throw new Error(error_1.UPDATE_ERROR); } } else { //直接 set operate[pa] = params[pa]; } } } return operate; } exports.default = updateTrans;