2016-05-07 19 views
3

私はレコードを_idで選択しようとしていますが、動作していません。Mongo.CollectionのIDでメテオが見つかりません

javascriptコンソールでMeteorコードと同じ問題が発生しています。そのため、簡単にコンソールの例を実行します。

私のコレクションにはArticleが2つあります。私は、サーバーからこのコレクションを公開しています:

if(Meteor.isServer){ 
    Meteor.publish('articles', function articlesPublication() { 
    return Articles.find(); 
    }); 
} 

そして、クライアント上でそれに加入:

export default createContainer(() => { 
    Meteor.subscribe('articles'); 

    return { 
    articles: Articles.find().fetch(), 
    }; 
}, App); 

私はコンソールにArticles.find().fetch()で、これらはクライアントになっていることを確認することができます

Articles.find().fetch()

オンラインの例では、Articles.find({_id: id})またはを実行できるはずですは、何もうまくいかない:

Articles.find(id) doesn't work in the console

I しかし、他の属性によってfindfindOne、することができます。 Articles.findOne({title: "Dog eats Poop"})が正しくレコードを返します。

findOne with the title attribute works

ここで何が起こっていますか?

答えて

3

はまもなくこれを入力した後、私は、レコードが異なっmeteor mongoコンソール御馳走文字列とMongo.ObjectId秒で作成したa Meteor issue that was closed in 2013を指摘しているan old StackOverflow issueにつまずきました。

だから私はArticles.findOne(new Mongo.ObjectID("572bdb811ab1829622aeee78"))の代わりArticles.findOne("572bdb811ab1829622aeee78")を試み、それが働いた:

casting the id as a Mongo.ObjectID works

そう...一体何を。この例のコードでは、IDをMongo.ObjectIDにキャストする必要はなく、元々この問題を引き起こしたのは3年前です。

+1

聖なる地獄、ありがとう!私は何時間も黙ってこのことを忘れていた。素晴らしい仕事、男。 –

+1

あなたは男の男です。私のお尻を保存してくれてありがとう。 –

関連する問題