Я очень удивлен тем, что определения Meteor.method
требуют, чтобы результат возвращался, а не вызывался обратный вызов. Но так оно и есть!Как дождаться результатов подпроцесса перед возвратом из Meteor.method
Я пытаюсь создать метод RPC в Meteor, который вызывает методы группы mongoose (это не похоже на то, что данные метеора api позволяют мне делать это, поэтому я работаю над ним). У меня есть что-то вроде этого:
Meteor.methods
getdata: ->
mongoose = __meteor_bootstrap__.require('mongoose')
db = mongoose.connect(__meteor_bootstrap__.mongo_url)
ASchema = new mongoose.Schema()
ASchema.add({key: String})
AObject = mongoose.model('AObject',ASchema)
AObject.collection.group(
...
...
(err,doc) -> # mongoose callback function
# I want to return some variation of 'doc'
)
return ??? # I need to return 'doc' here.
Мой собственный вариант кода размещен выше делает работу ... Я получаю звонки от моего метеора клиента, мангуст все объекты работают их магию. Но я не могу понять, как вернуть результаты в исходный контекст.
Как я могу это сделать?
Ответ Я пошел бы с мой код выглядит следующим образом:
require = __meteor_bootstrap__.require
Meteor.methods
getdata: ->
mongoose = require('mongoose')
Future = require('fibers/future')
db = mongoose.connect(__meteor_bootstrap__.mongo_url)
ASchema = new mongoose.Schema()
ASchema.add({key: String})
AObject = mongoose.model('AObject',ASchema)
group = Future.wrap(AObject.collection.group,6)
docs = group.call(AObject,collection,
...
...
).wait()
return docs
Вы можете принять ваши собственные ответы, и я думаю, что это будет оправдано здесь. Возможно, вам сначала придется немного подождать. –
Извините, что я был в восторге от мин и просто не мог с собой поделать. – dsummersl
Я не жалуюсь, я предлагаю вам принять свой собственный ответ, чтобы облегчить будущим искателям решение подобных проблем. –