检查mongodb数组中是否存在值

问题描述:

如何检查当前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

可以使用

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

count()意愿返回,将匹配查找()查询文档计数然后检查其> 0,并且通过使用ternary operator,如果是的,它会如果没有它会返回true返回false