Заполнение подполя из других коллекций (не ссылок) - PullRequest
1 голос
/ 17 февраля 2020

Я пытаюсь заполнить подполя документа, которые не определены как ссылки. Проблема в том, что mon goose продолжает возвращать ноль, всякий раз, когда я пытаюсь получить документ и заполнить поля.

Я постараюсь сделать этот вопрос c обобщенным. Я нигде не нашел ответа в Интернете.

schemaA:

const schemaA = new Schema({
  before: {
    type: Object,
    default: {}
  },
  after: {
    type: Object,
    default: {}
  }
});

module.exports = SchemaA = mongoose.model("schemaA", schemaA);

schemaB:

const schemaB = new Schema({
  someField: {
    subFieldA: {
      type: String
    },
    subFieldB: {
      type: String
    }
  }
});

module.exports = SchemaB = mongoose.model("schemaB", schemaB);

И пример документа, который будет существовать в schemaA is:

_id: ObjectId('5e4ab79d9d3ce8633aedf524')
before: {
  someField: {
    subFieldA: ObjectId('5e4ab74f9d3ce8633aedf2eb'),
    subFieldB: ObjectId('5e4ab74f9d3ce8633aedf2ep')
  },
}
after: {
  someField: {
    subFieldA: ObjectId('5e4ab74f9d4ce8633aedf2eb'),
    subFieldB: ObjectId('5e4ab74f9d3ce8639aedf2ep')
  },
}
date: 2020-02-17T15:56:13.340+00:00

Мой запрос:

const schemaAs = await SchemaA.find()
  .populate(
    "before.someField.subFieldA, before.someField.subFieldB, after.someField.subFieldA, after.someField.subFieldB"
  )

Но этот запрос возвращает null. Что я делаю не так?

1 Ответ

0 голосов
/ 17 февраля 2020

Вы ищете Dynami c Рекомендации . Это позволяет вам установить, на какую коллекцию вы ссылаетесь как свойство для каждого отдельного документа, вместо того, чтобы жестко кодировать его для одной конкретной c коллекции.

Насколько я знаю, заполнить свойство невозможно без каких-либо ссылок.

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