我有一个通用的SendMail路由,我想要创建多个远程方法来处理多个请求模板。关于如何从远程方法返回Email_Type返回到基本路线的任何想法。我知道我可以添加一个默认代码,但想要一个更优雅的解决方案。回环远程方法返回变量,而不是请求数据
Mail.genericSendMail = function genericEmail(response, callback) {
console.log(response);
let templateId=0;
//PROBLEM: HOW TO KNOW WHICH REMOTE WAS USED
switch (response.emailType) {
case "Template-1":
templateId= 1234;
break;
case "Template-2":
tempalteId = 456;
break;
default:
templateId = 789l
} //switch
console.log(templateId);
};
//Want multiple routes like this to support various templates
Mail.remoteMethod("genericEmail", {
http: {
path: "/emailTemplate1",
verb: "POST"
},
accepts [
{arg: "request", type:"object",http: {source:"body"},
default: {firstName:"", lastName:"",emailAddress:""}
}],
returns: RESTResponseStatic.loopbackAdapterCommonRestResponseDefinition()
});
//Want multiple routes like this to support various templates
Mail.remoteMethod("genericEmail", {
http: {
path: "/emailTemplate2",
verb: "POST"
},
accepts [
{arg: "request", type:"object",http: {source:"body"},
default: {emailAddress:"", promoCode:""}
}],
returns: RESTResponseStatic.loopbackAdapterCommonRestResponseDefinition()
});
我试图从钩子留下,因为会有这么多的可能性。如果我知道如何获得路线是可以接受的。 – Jim
据我所知,钩子将应用于模型方法而不是远程方法。意思是你可以有任意多的远程方法,但只需要一个钩子。我从来没有尝试将多个远程方法路由到一个模型,所以我不能确定。 –
我会补充一点,loopback有一个名为'getCurrentContext'的方法(参见[this](https://docs.strongloop.com/display/JA/Using+current+context)),你可以用它来获取路由。最后我使用了这个(一年或两年前),它有讨厌的并发问题,所以你应该检查LoopBack是否更新过。 –