私はmongohqで外部mongoインスタンスを使用しているので、
MONGO_URL=mongodb://heroku:censored@alex.mongohq.com:10025/appCensored
私の環境で。このmongoインスタンスを「読み取り専用」モードで使用しており、meteorアプリを監視アプリケーションとして使用しています。すべてのコレクションの_idは、流星のuuidではありません。
meteorを起動し、クライアントをlocalhost:3000に接続すると、サーバーに次のあいまいなエラーメッセージが表示されます。
Internal exception while processing message { msg: 'sub',
id: '9e11edd5-b8a5-4a67-86de-a3270ef3601f',
name: 'content',
params: [ 'ORG-4d9d4981-55d8-44ee-9025-32c41be679ca' ] } Error: Can't call yield in a noYieldsAllowed block!
at Function.Meteor._noYieldsAllowed.Fiber.yield (app/packages/meteor/fiber_helpers.js:13:11)
at Function.wait (/usr/local/meteor/lib/node_modules/fibers/future.js:111:14)
at Object.Future.wait (/usr/local/meteor/lib/node_modules/fibers/future.js:321:10)
at _Mongo._createSynchronousCursor (app/packages/mongo-livedata/mongo_driver.js:369:23)
at _Mongo._observe (app/packages/mongo-livedata/mongo_driver.js:493:14)
at Object.Meteor._noYieldsAllowed (app/packages/meteor/fiber_helpers.js:17:12)
at _Mongo._observe (app/packages/mongo-livedata/mongo_driver.js:485:10)
at Cursor._observeUnordered (app/packages/mongo-livedata/mongo_driver.js:344:22)
at Cursor._publishCursor (app/packages/mongo-livedata/mongo_driver.js:305:28)
at sub._runHandler (app/packages/livedata/livedata_server.js:378:13)
クライアントの「content」コレクションにドキュメントがありません。ブラウザを更新してクライアントをサーバーに再接続すると、すべてがスムーズに進み、「コンテンツ」にドキュメントが表示されます。'content'コレクションのサブスクリプションに問題があるようです。このコレクションのパブリッシュおよびサブスクライブコードは次のとおりです。
server.coffee
-------------
Content = new Meteor.Collection 'content'
Meteor.publish 'content', (org) ->
Content.find { recipientUid: org }
client.coffee
-------------
Content = new Meteor.Collection 'content'
Meteor.autosubscribe ->
uid = Session.get 'testUserUid'
if uid
Meteor.subscribe 'content', uid
Template.main.top_content = ->
# observe won't work with limited collections, use workaround
top = Content.find({}, { sort: { total: -1 } }).fetch()
top.slice 0, 10
私は何を間違えますか?