无法使用 JWT 在博客 post MERN 堆栈中填充作者
Cannot populate author in blog post MERN stack using JWT
我正在尝试使用 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 令牌,其中包含当前用户的 ID 和名称作为有效负载。
如果从 React 前端发送的令牌有效,那么我将在验证 JWT 时将用户的 ID 添加到请求 object 中。
IE。请求 object 将有一个 user_id 字段以及 headers、body 和其他
创建新的 post 路由如下所示:
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 并查看我的用户 collection 时,我看到 posts[] 是一个空数组。
如何解决此问题以便我可以使用填充?
User.findOne({ username: "existingUserInDatabase" })
.populate("Blog")
.then(user => res.send(user))
.catch(err => console.log(err));
此代码 returns 来自数据库的用户,但 posts[] 是一个空数组。
您需要使用博客而不是博客来填充。
User.findOne({ username: "existingUserInDatabase" })
.populate("blogs") //not "Blog"
.then(user => res.send(user))
.catch(err => console.log(err));
我正在尝试使用 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 令牌,其中包含当前用户的 ID 和名称作为有效负载。 如果从 React 前端发送的令牌有效,那么我将在验证 JWT 时将用户的 ID 添加到请求 object 中。 IE。请求 object 将有一个 user_id 字段以及 headers、body 和其他
创建新的 post 路由如下所示:
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 并查看我的用户 collection 时,我看到 posts[] 是一个空数组。 如何解决此问题以便我可以使用填充?
User.findOne({ username: "existingUserInDatabase" })
.populate("Blog")
.then(user => res.send(user))
.catch(err => console.log(err));
此代码 returns 来自数据库的用户,但 posts[] 是一个空数组。
您需要使用博客而不是博客来填充。
User.findOne({ username: "existingUserInDatabase" })
.populate("blogs") //not "Blog"
.then(user => res.send(user))
.catch(err => console.log(err));