我很欣赏这方面有很多问题,但我似乎无法找到相关的答案。
我正在使用Meteor调用来回调服务器上通过bitly
缩小URL的方法,但是虽然这在服务器上运行,但我在客户端上得到了一个未定义的响应。
这里的任何想法都是代码吗?
客户端
Meteor.call('bitlyShrink','http://test.com', function(error, response) {
console.log(error);
console.log(response);
})
服务器
Meteor.methods({
bitlyShrink(longurl) {
check (longurl, String);
const BitlyClient = require('bitly'),
bitly = BitlyClient('token');
bitly.shorten( longurl )
.then( function ( response ) {
console.log(response);
return response;
})
.catch( (error ) => {
return error;
});
}
});
答案 0 :(得分:2)
这是在Meteor方法中使用Promise时常犯的错误。
要让Meteor解析Promise并将结果返回给客户端,您应该在此方法结束时返回Promise:
Meteor.methods({
bitlyShrink(longurl) {
check (longurl, String);
const BitlyClient = require('bitly'),
bitly = BitlyClient('token');
const bitlyPromise = bitly.shorten(longurl);
// do something else, if needed
return bitlyPromise;
}
});
您不应添加.catch()
,它将自动添加到Meteor中。