index.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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, qualifier, 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. qualifier: qualifier,
  32. // async: async,
  33. request_data: transformData
  34. };
  35. return httpRequest_1.default({
  36. config: cloudbase.config,
  37. params,
  38. method: 'post',
  39. opts,
  40. headers: Object.assign({ 'content-type': 'application/json' }, (TCB_ROUTE_KEY ? { 'X-Tcb-Route-Key': TCB_ROUTE_KEY } : {}))
  41. }).then(res => {
  42. if (res.code) {
  43. return res;
  44. }
  45. let result;
  46. try {
  47. result = JSON.parse(res.data.response_data);
  48. }
  49. catch (e) {
  50. result = res.data.response_data;
  51. }
  52. return {
  53. result,
  54. requestId: res.requestId
  55. };
  56. });
  57. }
  58. exports.callFunction = callFunction;