2016-06-21 132 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}} 

但它似乎沒有工作,因爲它總是返回爲"Your favorite",即使當前流星的用戶ID不在陣列中。

任何想法?

+0

你的實現總是返回''你最喜歡的'''是因爲'isFavorite'方法總是返回一個遊標。該遊標不會立即訪問數據庫或返回文檔,除非如果您立即調用'fetch()'方法,該方法將返回所有匹配的文檔作爲Array或返回與查詢匹配的文檔數的'count()'方法。 – chridam

回答

0

可以使用

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

count()意願返回,將匹配查找()查詢文檔計數然後檢查其> 0,並且通過使用ternary operator,如果是的,它會如果沒有它會返回true返回false