minapp-fetch
Version:
213 lines (212 loc) • 9.4 kB
JavaScript
"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;