检查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不在阵列中。
任何想法?
答
可以使用
isFavorite: function() {
var user = Meteor.user()._id;
return Posts.find({favoritedBy: user}).count() > 0 ? true : false;
}
count()
意愿返回,将匹配查找()查询文档计数然后检查其> 0
,并且通过使用ternary operator
,如果是的,它会如果没有它会返回true
返回false
你的实现总是返回''你最喜欢的'''是因为'isFavorite'方法总是返回一个游标。该游标不会立即访问数据库或返回文档,除非如果您立即调用'fetch()'方法,该方法将返回所有匹配的文档作为Array或返回与查询匹配的文档数的'count()'方法。 – chridam