minapp-fetch
Version:
190 lines (189 loc) • 8.55 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("./utils/utils");
const constants_1 = require("./constants/constants");
const error_1 = require("./constants/error");
const findTrans_1 = __importDefault(require("./utils/findTrans"));
function fetchFind(table, params) {
let { BaaS_F, minapp, options } = utils_1.getBaaSF();
if (!table)
throw new Error(error_1.PARAM_TABLE_ERROR);
return new Promise((resolve, reject) => {
if (constants_1.PLATFORM_NAME_BAAS.indexOf(minapp) > -1) {
let QQ = findTrans_1.default(params, 1, BaaS_F, minapp);
let Product = new BaaS_F.TableObject(table);
if (QQ) {
Product.setQuery(QQ).limit(params.limit || 20).offset((params.limit || 20) * ((params.page || 1) - 1)).orderBy(params.orderBy || '-created_at').select(params.select || []).expand(params.expand || []).find({ withCount: params.withCount || false }).then((res) => {
// success
resolve(res);
}, (err) => {
// err
reject(err);
});
}
else {
Product.limit(params.limit || 20).offset((params.limit || 20) * ((params.page || 1) - 1)).orderBy(params.orderBy || '-created_at').select(params.select || []).expand(params.expand || []).find({ withCount: params.withCount || false }).then((res) => {
// success
resolve(res);
}, (err) => {
// err
reject(err);
});
}
}
//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) {
//微信云
let QQ = findTrans_1.default(params, 1, BaaS_F, minapp) || {};
let db = BaaS_F.database();
let tempCheck = db.collection(table);
let tempOrder = [{ field: '', method: '' }, { field: '', method: '' }];
let tempSelect = {};
if (params.select) {
if (utils_1.isArray(params.select)) {
let temp = params.select;
for (let i = 0; i < temp.length; i++) {
if (temp[i][0] === '-') {
tempSelect[temp[i].substring(1, temp[i].length)] = false;
}
else {
tempSelect[temp[i]] = true;
}
}
}
else {
let temp = params.select;
if (temp[0] === '-') {
tempSelect[temp.substring(1, temp.length)] = false;
}
else {
tempSelect[temp] = true;
}
}
}
if (params.orderBy) {
if (utils_1.isArray(params.orderBy)) {
let temp = params.orderBy;
for (let i = 0; i < temp.length; i++) {
if (temp[i][0] === '-') {
tempOrder[i] = {
field: temp[i].substring(1, temp[i].length),
method: 'desc'
};
}
else {
tempOrder[i] = {
field: temp[i],
method: 'asc'
};
}
}
}
else {
let temp = params.orderBy;
if (temp[0] === '-') {
tempOrder[0] = {
field: temp.substring(1, temp.length),
method: 'desc'
};
}
else {
tempOrder[0] = {
field: temp,
method: 'asc'
};
}
}
}
if (tempOrder[1].field) {
tempCheck.limit(params.limit || 20)
.skip((params.limit || 20) * ((params.page || 1) - 1))
.where(QQ)
.orderBy(tempOrder[0].field, tempOrder[0].method)
.orderBy(tempOrder[1].field, tempOrder[1].method)
.field(tempSelect)
.get()
.then(res => {
resolve({ data: { objects: res.data } });
}, (err) => {
reject(err);
});
}
else if (tempOrder[0].field) {
tempCheck.limit(params.limit || 20)
.skip((params.limit || 20) * ((params.page || 1) - 1))
.where(QQ)
.orderBy(tempOrder[0].field, tempOrder[0].method)
.field(tempSelect)
.get()
.then(res => {
resolve({ data: { objects: res.data || [] } });
}, (err) => {
reject(err);
});
}
else {
tempCheck.limit(params.limit || 20)
.skip((params.limit || 20) * ((params.page || 1) - 1))
.where(QQ)
.field(tempSelect)
.get()
.then(res => {
resolve({ data: { objects: res.data || [] } });
}, (err) => {
reject(err);
});
}
}
}
//webapi
if (minapp === constants_1.PLATFORM_NAME.ZX_WEBAPI) {
let QQ = findTrans_1.default(params, 1, BaaS_F, minapp) || '';
if (!options)
throw new Error(error_1.WEBAPI_OPTIONS_ERROR);
BaaS_F({
method: 'get',
url: `${options.RequestBase}/hserve/v2.2/table/${table}/record/`,
headers: options.Header,
params: {
where: QQ,
limit: params.limit || 20,
offset: (params.limit || 20) * ((params.page || 1) - 1),
order_by: params.orderBy || '-created_at',
expand: (params.expand || []).toString(),
keys: (params.select || []).toString(),
return_total_count: params.withCount ? 1 : 0,
},
}).then((res) => {
resolve(res);
}).catch((err) => {
reject(err);
});
}
//op
if (minapp === constants_1.PLATFORM_NAME.ZX_OP) {
let QQ = findTrans_1.default(params, 1, BaaS_F, minapp) || '';
BaaS_F.get(`https://cloud.minapp.com/userve/v2.4/table/${table}/record/`, {
params: {
where: QQ,
limit: params.limit || 20,
offset: (params.limit || 20) * ((params.page || 1) - 1),
order_by: params.orderBy || '-created_at',
expand: (params.expand || []).toString(),
return_total_count: params.withCount ? 1 : 0,
}
}).then((res) => {
resolve(res);
}).catch((err) => {
reject(err);
});
}
});
}
exports.default = fetchFind;