Я пытаюсь создать сайт блога с использованием стека 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);
Модель моего блога выглядит следующим образом:
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. Ie. у объекта 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));
Этот код возвращает пользователя из БД, но posts [] - это пустой массив.