Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于子元素的流星数据提取_Javascript_Meteor - Fatal编程技术网

Javascript 基于子元素的流星数据提取

Javascript 基于子元素的流星数据提取,javascript,meteor,Javascript,Meteor,我有一个关于出版收藏的问题。 我收集了每个文档的模型 { "_id" : "8SwmMoMHTREDNDQTN", "persons" : [ { "userId" : "29pr753gmyDxQZzo6", "lastReadTime":"" }, { "userId" : "gWKbYKiQsFzdCTwkz", "lastRe

我有一个关于出版收藏的问题。 我收集了每个文档的模型

{
    "_id" : "8SwmMoMHTREDNDQTN",
    "persons" : [ 
        {
            "userId" : "29pr753gmyDxQZzo6",
            "lastReadTime":""
        }, 
        {
            "userId" : "gWKbYKiQsFzdCTwkz",
            "lastReadTime":""
        }
    ]
}
现在我想发布persons.userId具有当前用户id的文档

这是我的发布代码

Meteor.publish("chatRooms", function(){
   return userData.find({persons:{$elemMatch:{userId:this.userId}}});
});
但这算不了什么

我还尝试了下面的代码

Meteor.publish("chatRooms", function(){
   return userData.find({"persons.userId":this.userId});
});
但是也得到了结果数据0


我怎样才能以这种方式发布?

看看有多少重复的内容(我知道我会的)。不是“查询”部分,而是因为您试图引用“当前用户”,而它实际上不在范围内。这就是问题所在。@NeilLunn:this.userId将给出meteor中当前登录的用户id,它将给出meteor.publish(“聊天室”,function(){return userData.find({“persons.userId”:this.userId});});将工作,请控制台.log(this.userId);并检查它是否存在于您的文档中。@BhaveshJariwala最后一个例子似乎是正确的。仔细检查:(1)用户是否已登录,(2)数据库是否确实包含匹配的文档,(3)文档是否已发布到客户端-打开浏览器控制台,在订阅后运行
userData.find().count()
。@DavidWeldon:我再次检查了用户是否已登录,数据库已经有匹配的数据,因为我在robomongo中使用了这个查询,并且给出了预期的结果。在控制台上,它在控制台上给出计数0