Meteor.method
定義では、コールバックを呼び出すのではなく、結果を返す必要があることに少し驚いています。しかし、そうです!
Meteorでマングースグループメソッドを呼び出すRPCメソッドを作成しようとしています(meteorのデータ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