Я пытаюсь создать сайт блога, используя стек MERN и JWT для аутентификации.
Моя модель пользователя выглядит так:
const mongoose = require("mongoose");
const { Schema } = mongoose;
const UserSchema = Schema({
name: String,
username: String,
password: String,
posts: [{ type: Schema.Types.ObjectId, ref: "Blog" }]
});
module.exports = mongoose.model("User", UserSchema);
Модель My Blog выглядит так:
const mongoose = require("mongoose");
const { Schema } = mongoose;
const BlogSchema = Schema({
title: String,
content: String,
date: { type: Date, default: Date.now },
author: { type: Schema.Types.ObjectId, ref: "Blog" }
});
module.exports = mongoose.model("Blog", BlogSchema);
Я использую JWT для аутентификации Создать новый маршрут блога. При входе в систему я отправляю клиенту токен JWT с идентификатором и именем текущего пользователя в качестве полезной нагрузки. Если токен, отправленный из интерфейса реакции, действителен, я добавляю идентификатор пользователя в объект req при проверке JWT. Т.е. объект req будет иметь поле user_id вместе с заголовками, телом и другими
Маршрут создания новой публикации выглядит так:
blog.post("/", authenticateUsingJwt, (req, res) => {
// Validating the req.body object
const newPost = new Blog({
title: req.body.title,
content: req.body.content,
author: req.user_id
});
newPost.save();
});
Когда я использую свою оболочку mongodb и просматриваю свою коллекцию User, я вижу, что posts [] является пустым массивом. Как это исправить, чтобы можно было использовать заполнение?
User.findOne({ username: "existingUserInDatabase" })
.populate("Blog")
.then(user => res.send(user))
.catch(err => console.log(err));
Этот код возвращает пользователя из БД, но сообщения [] - пустой массив.