получить данные в схему по id в мангусте - PullRequest
0 голосов
/ 28 января 2020

У меня есть две схемы, я хотел бы получить некоторую информацию из другой схемы, например (firstName, lastName) из userSchema по идентификатору, который я предоставляю при добавлении нового комментария в CommentsSchema

const CommentsSchema = new mongoose.Schema({
  userId: {
    type: String,
    required: true
  },
  commentText: {
    type: String,
    required: true
  },
  time: {
    type: Date,
    default: Date.now
  }
});
const UserSchema = new mongoose.Schema({
  userName: {
    type: String,
    required: true
  },
  firstName: {
    type: String,
    required: true
  },
  lastName: {
    type: String,
    required: true
  }
});

1 Ответ

1 голос
/ 29 января 2020

Вы можете использовать mon goose заполнение для получения данных из ссылочной коллекции.

Сначала вам нужно изменить схему комментариев, чтобы установить ссылку на модель User. Возможно, вам придется изменить значение ref, если вы использовали другое имя модели пользователя при применении mongoose.model("User", UserSchema).

const CommentsSchema = new mongoose.Schema({
  userId: {
    type: mongoose.Schema.Types.ObjectId,
    ref: "User",
    required: true
  },
  commentText: {
    type: String,
    required: true
  },
  time: {
    type: Date,
    default: Date.now
  }
});

Допустим, у вас есть этот пользователь в коллекции пользователей:

{
    "_id": "5e312d5cab2e5028b8865be3",
    "userName": "Mongoose",
    "firstName": "Buk",
    "lastName": "Lau",
    "__v": 0
}

И этот комментарий от этого пользователя:

{
    "_id": "5e312d9cab2e5028b8865be4",
    "userId": "5e312d5cab2e5028b8865be3",
    "commentText": "this is a comment",
    "time": "2020-01-29T07:00:44.126Z",
    "__v": 0
}

Теперь вы можете получить доступ к информации пользователя из комментария следующим образом:

router.get("/comments/:id", async (req, res) => {
  const result = await Comment.findById(req.params.id).populate("userId");
  res.send(result);
});

Результат будет таким:

{
    "_id": "5e312d9cab2e5028b8865be4",
    "userId": {
        "_id": "5e312d5cab2e5028b8865be3",
        "userName": "Mongoose",
        "firstName": "Buk",
        "lastName": "Lau",
        "__v": 0
    },
    "commentText": "this is a comment",
    "time": "2020-01-29T07:00:44.126Z",
    "__v": 0
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...