2016-06-21 21 views
2

Meteor.user()._idが存在するかどうかを確認する方法"favoritedBy"配列?mongodb配列に値が存在するかどうかを調べる

trueの場合は"Your favorite"を、falseの場合は"Not your favorite"を印刷します。 MongoDBの中

ドキュメント:

{ 
    "_id" : "W5WwAZatorDEb6DNP", 
    "createdBy" : "aTmb64zNGSyeDYFJZ", 
    "favoritedBy" : [ 
     "X594baqWYZiJqA3Qg", 
     "fgk234m2dkD229d12" 
    ] 
} 

Meteor.user()._id戻りX594baqWYZiJqA3Qgと言います。

これで真偽チェックはどうすればできますか?テンプレートで

isFavorite: function() { 
    var user = Meteor.user()._id; 
    return Posts.find({favoritedBy: user}); 
} 

は、私は次のことを試してみました

{{#if isFavorite}} 
    Your favorite 
{{else}} 
    Not your favorite 
{{/if}} 

しかし、常に現在の流星のユーザIDがある場合でも、"Your favorite"として返すように、動作するようには思えません配列内にはありません。

アイデア?

+0

あなたの実装が常に「お気に入り」を返すのは、isFavoriteメソッドが常にカーソルを返すためです。このカーソルは、即時にデータベースにアクセスしたり、ドキュメントを返すのではなく、 'fetch()'メソッドを呼び出して、一致するすべてのドキュメントを配列として返すか、クエリに一致するドキュメントの数を返す 'count()'メソッドを呼び出さない限り。 – chridam

答えて

0

あなたはそれがしません場合ははい、それはtrueを返します場合は、その> 0場合、およびternary operatorを使用して確認し、その後のfind()クエリにマッチするドキュメントの数を返す意志

isFavorite: function() { 
    var user = Meteor.user()._id; 
    return Posts.find({favoritedBy: user}).count() > 0 ? true : false; 
} 

count()を使用することができますreturn false

関連する問題