Возвращаемое значение из обратного вызова в Meteor.method
Я сталкиваюсь с чем-то, что я не понимаю с Метеором. У меня есть этот метод, который принимает запрос, отправляет его в Amazon, а затем в обратном вызове этой функции я пытаюсь вернуть результаты.
Meteor.methods({
'search': function(query) {
var bookInfo;
if (Meteor.isServer) {
amazon.execute('ItemSearch', {
'SearchIndex': 'Books',
'Keywords': query,
'ResponseGroup': 'ItemAttributes'
}, function(results) {
bookInfo = results;
console.log(bookInfo);
return bookInfo;
});
}
}
});
Но когда я вставляю в консоль моего браузера (chrome) следующее:
Meteor.call('search', 'harry potter', function(error, response) {
console.log('response:', response);
});
Я получаю это:
undefined
response: undefined VM13464:3
Мне кажется, я понимаю, что первое неопределенное происходит от метода, который ничего не возвращает клиенту, но обратный вызов, похоже, не работает вообще.
Amazon.execute (...) определенно что-то возвращает, так как console.log прямо над return записывает искомую информацию.
Есть идеи, что идет не так и как я могу это исправить?