将来自服务器的回调集成到流星/节点方法中
Integrating a callback from the server into a meteor/node method
需要一些帮助来升级我处理时事通讯订户的方法,但我真的不知道该怎么做。基本上,我希望能够在出现错误(或正确)时从Mailchimp服务器获取响应,以便能够处理它。
这是代码:
Meteor.methods({
subscribeToMailchimp:function(subscriberMail){
mailchimp.request({
method : 'POST',
path : Path,
body : {
"email_address": subscriberMail,
"status": "subscribed"
}
});
return true;
}});
因此,根据npm模块的文档:https://www.npmjs.com/package/mailchimp-api-v3以及他的例子:
mailchimp.request({
method : 'get|post|put|patch|delete',
path : 'path for the call, see mailchimp documentation for possible calls'
path_params : {
//path parameters, see mailchimp documentation for each call
}
body : {
//body parameters, see mailchimp documentation for each call
},
query : {
//query string parameters, see mailchimp documentation for each call
}
}, callback)
如果我理解正确的话,我最终应该能够实现一些回调。有人能给我指一个正确的方向来捕捉这种反应吗?
谢谢!
在回调中使用错误和结果对象
Meteor.methods({
subscribeToMailchimp: function(subscriberMail){
mailchimp.request({
method : 'POST',
path : Path,
body : {
"email_address": subscriberMail,
"status": "subscribed"
}
},function(err, results){ //here you can handle response
if(err){
console.log(err);
}else{
console.log(results);
}
});
}
});
为了总结其他答案,完整的片段如下所示(我无法测试这个特定的请求,但我认为你明白了):
Meteor.methods({
subscribeToMailchimp: function(subscriberMail){
return Meteor.wrapAsync(function(callback) {
mailchimp.request({
method : 'POST',
path : Path,
body : {
"email_address": subscriberMail,
"status": "subscribed"
}
}, function(err, results) {
if (err) {
callback(err, null);
} else {
callback(null, results);
}
});
})();
}
});
如果你想将远程服务(在这种情况下是Mailchimp)的实际响应(错误/结果)发送到你的客户端,你必须让你的服务器Meteor方法"挂断",等待异步远程服务请求完成,然后才能让你的方法返回。
否则,该方法将启动(异步)请求并继续执行,即返回(因为该方法中没有更多指令),因此调用客户端Meteor调用的回调。一旦远程服务请求完成,Meteor调用就已经完成,只有您的服务器才能执行一些处理。
您可以用Meteor.wrapAsync()
包装异步请求,也许可以在之前添加一个this.unblock()
,让其他Meteor方法在等待远程服务响应时进行处理。
另请参阅:投掷流星。错误未到达客户端
相关文章:
- 节点导出返回一个空对象
- 可以前端maven插件使用节点,npm已经安装
- 在jstree中,如何将指定的节点集中到大型树上
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 如何从模块链中调用函数.导出到节点中
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- 如何使用铁流星与流星的默认路线
- d3基于用户选择动态更新节点
- 有条件更新d3.js力图中节点的最佳方法
- 在流星上使用微信js-sdk时出现拒绝权限错误
- 如何处理node.js节点mongodb中的连接和查询队列
- 将DOM节点值与字符串Javascript进行比较
- 节点fs.stat名称未定义
- 无法安装节点sass相关性
- 节点 js 流星 js 图像文件上传图像损坏
- 是否可以在流星应用程序中使用本地(未发布)节点模块
- 流星的节点光纤故障
- 流星节点:mysql自定义查询
- 将来自服务器的回调集成到流星/节点方法中
- 流星/节点模块中的非法令牌=>饼干