我们在使用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。下次再更新。
网友评论