无法使用JWT在博客文章MERN堆栈中填充作者

问题描述 投票:0回答:1

我正在尝试使用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验证创建新Blog路由。登录时,我将使用当前用户的ID和名称作为有效负载向客户端发送JWT令牌。如果从react前端发送的令牌有效,那么我将在验证JWT时将用户的ID添加到req对象。就是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 shell并查看我的用户集合时,我看到posts []是一个空数组。如何解决这个问题,以便我可以使用填充??

User.findOne({username : 'existingUserInDatabase'}).populate('Blog').then(user => res.send(user)
.catch(err => console.log)

此代码从数据库返回用户,但posts []是一个空数组。

我正在尝试使用MERN堆栈和JWT进行身份验证来创建博客网站。我的用户模型是这样的:const mongoose = require('mongoose')const {Schema} = mongoose; const UserSchema = ...

mongoose jwt mongoose-populate
1个回答
0
投票

您需要使用博客而不是博客进行填充。

© www.soinside.com 2019 - 2024. All rights reserved.