#javascript #mongodb #meteor #ecmascript-6
#javascript #mongodb #метеор #ecmascript-6
Вопрос:
Я использую Meteor / Mongo и, просматривая [documentation] [1], я все еще не уверен, как использовать Cursor#map
функции стрелки с ECMAScript 6.
У меня есть cursor
:
private messages: Mongo.Cursor<Message>;
из Messages
:
interface Message {
_id?: string;
chatId?: string;
senderId?: string;
ownership?: string;
content?: string;
createdAt?: Date;
changeDate?: boolean;
readByReceiver?: boolean;
}
и я хотел бы вернуть список messages
, который соответствует определенному _id
.
Когда я пытаюсь:
let _id: string = newMessage._id;
const matchedMessageIds: string[] = this.messages.map(({_id}) => _id)
.reduce((result, _id) => result.concat(_id), []);
какой вид работ, но он возвращает результаты для целого cursor
, а не только для того, который соответствует _id
.
Комментарии:
1. Что вы подразумеваете под «соответствием
_id
«? Ты хотелfilter
этого неmap
делать?2. да, возможно, filter — правильный вариант, я новичок в Meteor и Mongo, извините.
3. Итак, что вы хотите сделать?
4. Я не вижу
filter
функции наCursor
: docs.meteor.com/api/collections.html#mongo_cursor5. Предполагая
_id
, что это первичный ключ для коллекции, будет только один соответствующий документ, и вы можете найти его непосредственно с помощью.findOne(_id)
Ответ №1:
Используйте filer
:
const filter_id: string = newMessage._id;
const matchedMessageIds: string[] = this.messages.map(({_id}) => _id)
.filter(_id: string => _id === filter_id);