Parse Server 的云函数写法优化

我们在使用parse server时,需要编写一些在服务器端运行的函数,也就是cloud function(云函数),定义一个云函数的默认写法为:

Parse.Cloud.define("hello", request => {
  let param_A = request.params.param_A;
  return `hello, ${param_A}`;
});

客户端(以js环境为例)调用时写法为:

Parse.Cloud.run("hello",{param_A: "everyone"}).then(res => {
    console.log(`hello返回结果:${res}`);
}).catch(err => {
    console.log(`执行错误:${err}`);
});

以上表示定义一个云函数为hello,参数为param_A,返回值为字符串。这种写法很直观,但有个问题,定义中函数的名称是字符串(“hello”),当定义的云函数较多时,容易写错或者函数名重复,而在编码阶段难以发现这种错误。怎么避免呢,我在定义时使了个小trick,推荐给大家。
1.cloud目录下,写一个common.js文件,其中定义如下:

function defineCloudFunction(func) {
  Parse.Cloud.define(func.name, func);
}
module.exports = {
  defineCloudFunction,
};

2.cloud目录下,在要编写云函数的文件(如hello.js)中,就可以这样定义云函数了:

const parse = require('./common');
const hello = request => {
  let param_A = request.params.param_A;
  return `hello, ${param_A}`;
}

parse.defineCloudFunction(hello);

基于同样的trick,我也改造了cloud trigger的写法,使得定义afterSave、beforeDelete等cloud trigger时,仅配置触发条件的className、field和触发后受影响的className、field即可,而不用在每个class上去定义其trigger。下次再更新。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。