index.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. const httpRequest_1 = __importDefault(require("../utils/httpRequest"));
  7. const utils_1 = require("../utils/utils");
  8. const code_1 = require("../const/code");
  9. const cloudbase_1 = require("../cloudbase");
  10. /**
  11. * 调用云函数
  12. * @param {String} name 函数名
  13. * @param {Object} functionParam 函数参数
  14. * @return {Promise}
  15. */
  16. async function callFunction(cloudbase, { name, data }, opts) {
  17. const { TCB_ROUTE_KEY } = cloudbase_1.CloudBase.getCloudbaseContext();
  18. let transformData;
  19. try {
  20. transformData = data ? JSON.stringify(data) : '';
  21. }
  22. catch (e) {
  23. throw utils_1.E(Object.assign({}, e, { code: code_1.ERROR.INVALID_PARAM.code, message: '对象出现了循环引用' }));
  24. }
  25. if (!name) {
  26. throw utils_1.E(Object.assign({}, code_1.ERROR.INVALID_PARAM, { message: '函数名不能为空' }));
  27. }
  28. const params = {
  29. action: 'functions.invokeFunction',
  30. function_name: name,
  31. request_data: transformData
  32. };
  33. return httpRequest_1.default({
  34. config: cloudbase.config,
  35. params,
  36. method: 'post',
  37. opts,
  38. headers: Object.assign({ 'content-type': 'application/json' }, (TCB_ROUTE_KEY ? { 'X-Tcb-Route-Key': TCB_ROUTE_KEY } : {}))
  39. }).then(res => {
  40. if (res.code) {
  41. return res;
  42. }
  43. // if (res.code) {
  44. // // return res
  45. // throw E({ ...res })
  46. // } else {
  47. let result;
  48. try {
  49. result = JSON.parse(res.data.response_data);
  50. }
  51. catch (e) {
  52. result = res.data.response_data;
  53. }
  54. return {
  55. result,
  56. requestId: res.requestId
  57. };
  58. });
  59. }
  60. exports.callFunction = callFunction;