Как сопоставить свойства объекта другому? - PullRequest
0 голосов
/ 25 ноября 2018

Я знаю, что есть много вопросов по этому вопросу, но я не могу понять, как применить его в моем случае.

Код выглядит следующим образом:

const mailDocumentSchema = new schema.Entity('mailDocuments', {}, { idAttribute: 'identifier' });
const mailSchema = new schema.Entity('mails', { emailDocument: [mailDocumentSchema] }, { idAttribute: 'identifier' });
const mailAccountSchema = new schema.Entity('mailAccounts', { mails: [mailSchema] }, { idAttribute: 'address' });

const mailMapper = (item: any): Mail => ({
  id: item.identifier,
  title: item.subject,
  documents: item.emailDocument,
  subject: item.realSubject,
  receiver: item.receiver,
  createdDate: item.createdDate,
  sendDate: item.sendDate,
  body: item.body
});

const mailDocumentMapper = (item: any): MailDocument => ({
  id: item.identifier,
  docId: item.oldDocId,
  name: item.name,
  createdDate: item.createdDate,
  bodyStatus: item.bodyStatus
});

export const undefinedDocumentsMapper = (response: any[]): NormalizedMailbox => {
  const undefinedDocuments = map(groupBy(response, item => item.receiver), (item, key) => ({ name: null, address: key, mails: item }));
  const normalizedResponse = normalize(undefinedDocuments, [mailAccountSchema]);
  return {
    mailAccounts: Object.values<MailAccount>(normalizedResponse.entities.mailAccounts),
    mails: Object.values<any>(normalizedResponse.entities.mails).map(mailMapper),
    mailDocuments: Object.values<any>(normalizedResponse.entities.mailDocuments).map(mailDocumentMapper) 
  };
};

Ответ APIis:

[
   { identifier: "...", title: "...", receiver: "...", emailDocuments: [{...}] },
   ...
]

Я хочу сопоставить свойства receiver и title из mails объектов сущности с mailDocuments объектами сущности.

В результате получитьmailDocuments объекты-сущности как таковые:

{
  id: "...",
  docId: "...",
  name: "...",
  createdDate: "...",
  bodyStatus: ...,
  title: "...",
  receiver: "..."
}

Как это сделать?

1 Ответ

0 голосов
/ 29 ноября 2018

Если я правильно понимаю, вы можете сделать следующее:

mails.forEach(mail => {
  mail.documents.forEach(document => {
    document.receiver = email.receiver
    document.title = email.title
  })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...