Пн goose заполнить вложенный документ возвращает ноль - PullRequest
0 голосов
/ 17 апреля 2020

Я хочу заполнить запрос с помощью mon goose, используя метод "populate". Я использую самую последнюю / стабильную версию mon goose. Соответствующие части моей схемы определены, как показано ниже. Проблема в том, что когда я пытаюсь заполнить const sessions = await Session.find().populate({ path: "coach", select: "name email" }), я всегда получаю "coach": null.

. Я ожидал, что он просто вернет сеансы, которые соответствуют моему запросу, вместе с объектом coach (user). Что я здесь не так делаю?

UserSchema

const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({

  email: {
    type: String,
    required: [true, "email is required"],
    unique: [true, "email must be unique"],
    match: [/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/, "Invalid email"]
  },
  name: {
    type: String,
    required: [true, "name is required"]
  },
  (....)
});

export const User = mongoose.model('User', UserSchema);

SessionSchema

const mongoose = require('mongoose');

const SessionSchema = new mongoose.Schema({
  coach: { type: mongoose.Schema.ObjectId, ref: 'User', required: true },
  location: {
    street: { type: String }
  },
  (......)
});

export const Session = mongoose.model('Session', SessionSchema);

Ответы [ 2 ]

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

Я нашел это. Извините ребята. Код в порядке. Проблема заключалась в том, что я заполнял свою БД записями, которые имели свойство «id», а не «_id». Таким образом, «id» не был сохранен должным образом, и поэтому ответ был на самом деле null.

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

Я думаю, что тип тренера должен быть следующим (Schema.Types, кажется, отсутствует):

  coach: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...