如何从流星发布中的阵列中返回单个索引

问题描述:

我收集了所有用户都可以使用的“任务”集合。用户可以打勾表示他们已经完成了一项任务。当他们这样做时,会调用一个方法,将其userId添加到附加到名为'usersCompleted'的任务文档的数组中。如果用户已完成任务,则其userId将位于该阵列中。如何从流星发布中的阵列中返回单个索引

我不想将此数组发布到客户端,因为那么所有用户都将有权访问其中包含其他用户标识的数组。

不过,我想有一个检查,如果用户的ID是该数组中的一个帮手,然后返回要么“检查”或“”。这样用户就可以看到他们完成的任务。

在我出版我能够发现用户已经完成了所有的任务,但我无法从“usersCompleted”阵列只返回其ID。如果有人能帮助我做到这一点,将不胜感激。

下面是我当前的代码,但$ elemMatch没有被正确

Meteor.publish('tasks.single.lesson.completed', function(lessonNumber) { 
    check(lessonNumber, Number); 

    if(this.userId) { 
    return Tasks.find({ lesson: lessonNumber, usersCompleted: this.userId} , {fields: { $elemMatch: {usersCompleted: this.userId}}}); 
    } else { 
    this.stop(); 
    return; 
    } 
}); 
+0

的可能的复制[只检索MongoDB中集合的对象数组中查询元素( http://*.com/questions/3985214/retrieve-only-the-queried-element-in-an-object-array-in-mongodb-collection) – felix

使用我的工作了这一点,和我张贴的其他人谁可能有这个问题的答案。

原来蒙戈有这种情况建立了一个修改器:$

我的工作刊物现已有:

Meteor.publish('tasks.single.lesson.completed', function(lessonNumber) { 
    check(lessonNumber, Number); 
    if(this.userId) { 
    return Tasks.find({ lesson: lessonNumber, usersCompleted: this.userId} , 
         { fields: { "usersCompleted.$": 1}}); 
    } else { 
    this.stop(); 
    return; 
    } 
});