У меня есть коллекция «задач», доступная для всех пользователей. Пользователи могут отметить, что они «выполнили задачу». Когда они это делают, вызывается метод, который добавляет их userId к массиву, который прикреплен к документу задачи с именем «usersCompleted». Если пользователь выполнил задачу, их userId будет в этом массиве.Как вернуть один индекс из массива в публикации Meteor
Я не хочу публиковать этот массив для клиента, потому что тогда у всех пользователей будет доступ к массиву с другими userIds.
Однако я хочу иметь помощника, который проверяет, находится ли идентификатор пользователя в этом массиве, а затем возвращает либо «проверено», либо «». Таким образом пользователи видят задачи, которые они выполнили.
В моей публикации я могу найти все задачи, которые пользователь выполнил, но я не могу вернуть только их идентификатор из массива «usersCompleted». Если кто-нибудь может помочь мне сделать это, это будет очень признательно.
Ниже мой текущий код, но $ 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;
}
});
Возможный дубликат [Получить только запрашиваемый элемент в массив объектов в коллекции MongoDB] (http://stackoverflow.com/questions/3985214/retrieve-only-the-queried-element-in-an-object-array-in-mongodb-collection) – felix