Mon goose заполняет идентификатор объекта ссылки, а не сам объект - PullRequest
0 голосов
/ 25 мая 2020

Фон

Вот часть моей модели пользователя:

const Group = require("./Group")

...

groups: {
    type: [{ type: Schema.ObjectId, ref: Group }],
    default: [],
},

А вот моя модель группы:

module.exports = mongoose.model(
    "Group",
    new Schema(
        {
            name: {
                type: String,
                required: true,
                unique: true,
            },

            /**
             * Array of User ObjectIDs that have owner rights on this group
             */
            owners: {
                type: [{ type: Schema.ObjectId, ref: User }],
                default: [],
            },
        },
        {
            timestamps: true,
        }
    )
)

Код

Вот код, который я запускаю, чтобы попытаться заполнить:

const user = await (await User.findOne({ _id: ... })).execPopulate("Group")
console.log(user.groups)

Мой console.log выводит массив идентификаторов объектов , когда я хочу, чтобы он выводил фактический документ группы .

Попытки решения

Я попытался изменить свой ref на использование строки ("Group"), я попытался организовать свой запрос по-другому, et c. Я не уверен, как бы я go это сделал.

Заранее извиняюсь, если это дубликат, я сделал все возможное, чтобы поискать, но не могу найти решение, которое работает для me.

В частности, в чем мне нужна помощь?

Я пытаюсь создать «связь» между моделью пользователя и моделью группы. Я ожидаю, что в моем console.log будет выведен групповой документ; но он выводит идентификатор объекта (именно так он хранится в базе данных в сыром виде, что означает, что Mon goose не преобразует его правильно)

1 Ответ

0 голосов
/ 26 мая 2020

Когда вы меняете execPopulate на populate, например:

async function findUserAndPopulate(userId){
  const response = await User.findOne({
    _id: userId,
  }).populate('groups')


  console.log("response",response)
}

, вы получаете:

{
  groups: [
    {
      owners: [Array],
      _id: 5ecc637916a2223f15581ec7,
      name: 'Crazy',
      createdAt: 2020-05-26T00:31:53.379Z,
      updatedAt: 2020-05-26T00:31:53.379Z,
      __v: 0
    }
  ],
  _id: 5ecc6206820d583b99b6b595,
  fullname: 'James R',
  createdAt: 2020-05-26T00:25:42.948Z,
  updatedAt: 2020-05-26T00:36:12.186Z,
  __v: 1
}

Таким образом, вы можете получить доступ к user.groups

См. Do c: https://mongoosejs.com/docs/populate.html

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