2017-05-08 21 views
0

私はここで奇妙な問題に遭遇しています... 私はdb.collectionにいくつかのデータを挿入したように見えてから、それを反映させるためにはdb.collection.find().fetch()を使うようです。私はクロームコンソールに挿入するコードの下なぜ私のdb.collection.insertは機能しませんか?

検索:

merchantReviews.insert({merchantScore: "5.5"}, function() { 
console.log("Review value successfully inserted"); 
}); 

この利回り:

"9sd5787kj7dsd98ycnd"  
Review value successfully inserted 

I返された値"9sd5787kj7dsd98ycnd"が成功デシベルの収集インサートの指標であると思います。それから私は実行すると:

merchantReviews.find().fetch() 

は私が手:

[] 

は誰もがここで何が起こっているかを教えてもらえますか?

お手数をお待ちしております。

+0

クライアントまたはサーバーで 'merchantReviews.find()。fetch()'を実行していますか? – Waiski

答えて

2

ここには2つの可能性があります。クライアント上を通過してもサーバー上で挿入が失敗するか、コレクションに登録していないことです。 (あなたがinsecureパッケージを削除したが、どのcollection.allowルールを宣言していない場合は、権限が不十分に最も可能性が高い)場合insert

は、サーバー上の障害が発生し、クライアントコードはまだあなたの場合には(意図挿入IDを返し、"9sd5787kj7dsd98ycnd" )。挿入が失敗または成功したことをサーバーが確認すると、コールバックが呼び出されます。失敗した場合は、単一のエラー引数を指定してコールバックが呼び出されます。これをキャッチするには、代わりにこのように文書を挿入することができます。これはまだ成功し、挿入をログに記録します

merchantReviews.insert({merchantScore: "5.5"}, function(error) { 
    if (error) { 
    console.error(error); 
    } else { 
    console.log("Review value successfully inserted"); 
    }  
}); 

場合は、コレクションに加入していない、とあなたはautopublishパッケージを削除しました。 Meteor publish-subscribeシステムhereについて読むことができます。あなたはMeteor.subscribe('reviews')で、コレクションに加入する必要が

Meteor.publish('reviews', function() { 
    return merchantReviews.find(); 
}); 

そして、サーバコード(またはあなたのJSコンソール):基本的に、あなたはpublishにサーバー側のコードでコレクションを持っています。今すぐmerchantReviews.find().fetch()を呼び出すと、コレクション内のすべてのドキュメントが返されます。

関連する問題