我們在使用parse server時,需要編寫一些在服務(wù)器端運行的函數(shù)敷搪,也就是cloud function(云函數(shù)),定義一個云函數(shù)的默認(rèn)寫法為:
Parse.Cloud.define("hello", request => {
let param_A = request.params.param_A;
return `hello, ${param_A}`;
});
客戶端(以js環(huán)境為例)調(diào)用時寫法為:
Parse.Cloud.run("hello",{param_A: "everyone"}).then(res => {
console.log(`hello返回結(jié)果:${res}`);
}).catch(err => {
console.log(`執(zhí)行錯誤:${err}`);
});
以上表示定義一個云函數(shù)為hello,參數(shù)為param_A羞延,返回值為字符串渡嚣。這種寫法很直觀梢睛,但有個問題,定義中函數(shù)的名稱是字符串(“hello”)识椰,當(dāng)定義的云函數(shù)較多時绝葡,容易寫錯或者函數(shù)名重復(fù),而在編碼階段難以發(fā)現(xiàn)這種錯誤腹鹉。怎么避免呢藏畅,我在定義時使了個小trick,推薦給大家功咒。
1.cloud目錄下愉阎,寫一個common.js文件,其中定義如下:
function defineCloudFunction(func) {
Parse.Cloud.define(func.name, func);
}
module.exports = {
defineCloudFunction,
};
2.cloud目錄下力奋,在要編寫云函數(shù)的文件(如hello.js)中榜旦,就可以這樣定義云函數(shù)了:
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時,僅配置觸發(fā)條件的className猿挚、field和觸發(fā)后受影響的className咐旧、field即可,而不用在每個class上去定義其trigger亭饵。下次再更新休偶。