Как заполнить ссылочный документ из объекта `this`? - PullRequest
1 голос
/ 01 апреля 2020

Я использую NodeJS, MongoDB и Mon goose. Я могу заполнить ссылочный документ, если я использую findById(this.id), но не использую this напрямую:

IssuanceSchema.methods.getOrganizationName = async function() {

  let issuance = await Issuance.findById(this.id).populate('organization');
  console.log(issuance);
  let temp = this.populate('organization');
  console.log(temp);

  console.log(issuance.organization.displayName());
  console.log(temp.organization.displayName());
  // ...
}

Журнал показывает:

{
  _id: 5e849ca9b07ed81bd2eaad89,
  organization: {
    _id: 5e80a19d8c910f196c11673c,
    ...
  },
}
{
  _id: 5e849ca9b07ed81bd2eaad89,
  organization: 5e80a19d8c910f196c11673c,
}
SomeName
(node:10231) UnhandledPromiseRejectionWarning: TypeError: temp.organization.displayName is not a function

Как я могу заполнить ссылочный документ напрямую без раунда о findById?

1 Ответ

1 голос
/ 02 апреля 2020

Кажется, вы просто пропускаете звонок на execPopulate(). В вашем случае это будет:

let temp = this.populate('organization').execPopulate();

Извлечь документы :

Если у вас есть документ mon goose, и вы хотите заполнить некоторые его пути вы можете использовать метод Document#populate(). Просто убедитесь, что вы звоните Document#execPopulate(), чтобы выполнить populate().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...