1

別のクライアント ディレクトリとサーバー ディレクトリを使用しているときに Meteor に苦労しており、誰かが私を助けてくれることを望んでいました。

サーバー サブディレクトリ内のサーバー コードは次のようになります。

Testing = new Meteor.Collection("testing");

Testing.insert({hello1:'world1'});
Testing.insert({hello2:'world2'});
Testing.insert({hello3:'world3'});

Meteor.publish("testing", function() {
console.log('server: ' + Testing.find().count());
return Testing.find();
});

client サブディレクトリのクライアント コードは次のようになります。

Meteor.subscribe("testing");
var Testing = new Meteor.Collection("testing");
console.log('count: ' + Testing.find().count());

自動公開のオンとオフでこれを試しました。

ターミナル ウィンドウで、ログ ステートメントが期待どおりの数の項目を出力していることを確認できます。しかし、私のクライアントでは、ブラウザのコンソール ウィンドウに常に 0 のカウントが表示されます。

これが関連しているかどうかはわかりませんが、subscribe ステートメントを変更して変更を保存すると、コンソール ウィンドウに次のエラーが表示されます。

POST http://localhost:3000/sockjs/574/ukpxre9v/xhr 503 (Service Unavailable) sockjs-    0.3.4.js:821
AbstractXHRObject._start sockjs-0.3.4.js:821
(anonymous function)

私は愚かな間違いを犯していると確信していますが、それを追跡する運がありませんでした. どんな助けでも大歓迎です。

4

1 に答える 1

1

実行するconsole.log('count: ' + Testing.find().count());のが早すぎます Meteor はサーバー コレクションをクライアントに同期しますが、非常に短い時間しかかかりません。

たとえばconsole.log('count: ' + Testing.find().count());、Web コンソールで実行すると、適切な結果が得られるはずです。サーバーからデータをロードするのに 0.5 秒ほど待つ必要があるからです。

Meteor.autorunTemplate helperなど、ライブ カウントが正しく表示されるように、このコードをリアクティブ コンテキストに配置できます。

503 XHR エラーが表示される理由は、コードを変更して保存すると、流星が再起動して新しいコンテンツをできるだけ早く提供するため、ページが更新されるまでクライアントとサーバー間のソケットが一時的に中断されるためです。これは、コードに問題があるわけではありません。

于 2013-02-12T17:19:01.757 に答える