我有一个通用的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()
});发布于 2017-02-13 23:24:21
有几种不同的方法可以做到这一点。因为它恰好是一个POST请求,所以我通常会使用一个之前的远程钩子将数据附加到主体。
假设您有一个用于登录用户的model方法。假设我们有一个多realm平台,所以我们需要知道我们登录的是什么平台。如果你不使用领域或者不知道它们是什么,不用担心。这只是向您展示了如何将数据填充到model方法。
User.login = function(data, cb) {
if (data.realm == 'platform1) {
return logUserIntoPlatform1(data, cb);
}
return logUserIntoDefaultPlatform(data, cb);
}现在,假设您不希望客户端/前端发送realm,并且不希望在模型中查找realm。我们可以像这样添加一个beforeRemote钩子:
User.beforeRemote('login', function (context, user, next) {
context.args.data.realm = lookUpRealmSync(context); // 1
next();
});这将在login方法之前调用。注意next()调用:这是在实际命中模型方法之前进行错误检测的方法。像next({ status: 422, message: 'Parameter missing: password });这样的代码将返回一个错误,并且不执行User.login方法。您可能必须仔细查看您的上下文对象(即,标有1的行可能不会像我为您显示的那样工作)。
如果你想了解更多关于这方面的内容,I LoopBack的docs是非常好的。自从我上次使用它们以来,它们似乎已经更新过了,所以我无法将您链接到更有用的页面。不过,我找到了远程方法文档here。
编辑:我仔细研究了你的问题。您应该能够从context对象检索路径并相应地传递数据。我不打算对此进行编码,因为我不知道它在对象中的实际位置。
https://stackoverflow.com/questions/42206953
复制相似问题