【发布时间】:2016-10-22 21:58:44
【问题描述】:
如何检查当前Meteor.user()._id 是否存在于"favoritedBy" 数组中?
如果为真,则打印"Your favorite",如果为假,则打印"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",即使当前 Meteor 用户 ID 不在数组中。
有什么想法吗?
【问题讨论】:
-
你的实现总是返回
"Your favorite"的原因是因为isFavorite方法总是返回一个游标。此游标不会立即访问数据库或返回文档,除非您立即调用fetch()方法,该方法将所有匹配的文档作为数组返回或count()方法返回与查询匹配的文档数。
标签: javascript arrays mongodb meteor mongodb-query