Возвращаемые значения от серверных метеорных методов
Вот мой код,
googleContacts:function()
{
var opts= { email: Meteor.user().services.google.email,
consumerKey: "xxxxxxxx",
consumerSecret: "xxxxxxxxxx",
token: Meteor.user().services.google.accessToken,
refreshToken: Meteor.user().services.google.refreshToken};
gcontacts = new GoogleContacts(opts);
gcontacts.refreshAccessToken(opts.refreshToken, function (err, accessToken)
{
if(err)
{
console.log ('gcontact.refreshToken, ', err);
return false;
}
else
{
console.log ('gcontact.access token success!');
gcontacts.token = accessToken;
gcontacts.getContacts(function(err, contact)
{
console.log(contact);
return contact;//want to return this value
})
}
});
}
Я хочу вернуть contact
вызываемому методу, так как он находится во внутренней функции, мне немного трудно вернуть его в вызываемый метод. Если он находится на стороне клиента, то мы можем сохранить значение в переменной сеанса, и мы можем его вернуть, но это метод на стороне сервера, как это сделать?
1 ответ
Решение
Используйте Фьючерсы:
Future = Npm.require('fibers/future');
Meteor.methods({
methodname: function() {
var fut = new Future();
apiCall(function(err, res) {
fut.return(...);
});
return fut.wait();
},
});