Монго.Курсор # сопоставление (обратный вызов, [thisArg]) с функциями стрелки ECMAScript 6

#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_cursor

5. Предполагая _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);