J'utilise par exemple mongo externe à mongohq, donc je"Impossible d'appeler yield dans un bloc noYieldsAllowed!" erreur sur le serveur lorsque le client se connecte
MONGO_URL=mongodb://heroku:[email protected]:10025/appCensored
dans mon environnement. J'utilise cette instance mongo en mode "lecture seule", en utilisant mon application météore comme application de surveillance. _id's dans toutes les collections ne sont pas des uuids de météore.
Quand je commence météore et connecter un client à localhost: 3000, je me suis l'obscur message d'erreur sur le serveur:
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)
et j'ai pas les documents dans la collection « contenu » sur le client. Lorsque j'actualise le navigateur et que je reconnecte le client au serveur, tout se passe bien et j'ai des documents dans le 'contenu'. On dirait que quelque chose ne va pas avec l'abonnement à la collection «contenu». Publiez et souscrivez le code pour cette collection est ci-dessous:
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
Qu'est-ce que je fais mal?
Il y a un changement dans le 0.7.1 -> 0.7.1.2 de météore qui déclenche un message d'erreur similaire. Consultez ce fil pour plus de détails: https://github.com/meteor/meteor/issues/1868 – meawoppl