MongoDB模型未通过Schema嵌入式对象进行连接

阿什图什·阿格劳瓦尔(Ashtuosh Agrawal)

我正在开发博客应用程序。在这里,一个用户与帖子具有一对多的关系。创建了基本的CRUD之后,我想创建一个包含单个用户的所有帖子的个人资料页面。我正在执行所有步骤,但是当我获取所有用户时,仍然收到空的Post数组。

我也试图在每个帖子中获取用户名,而不只是ID。我正在使用“填充”,但仍然只返回用户ID。

router.get('/', auth, async (req, res) => {
	try {
		const Posts = await Post.find()
			.sort({
				date: -1
			})
			.populate('users');
		res.json(Posts);
	} catch (err) {
		console.error(err.message);
		res.status(500).send('Server Error');
	}
});

这是我的用户架构

const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
	name: {
		type: String,
		required: true
	},
	posts: [
		{
			type: mongoose.Schema.Types.ObjectId,
			ref: 'Post'
		}
	],
	email: {
		type: String,
		required: true,
		unique: true
	},
	password: {
		type: String,
		required: true
	},
	date: {
		type: Date,
		default: Date.now
	}
});

const User = mongoose.model('user', UserSchema);
module.exports = User;

这是发布架构

const mongoose = require('mongoose');

const PostSchema = new mongoose.Schema({
	user: {
		type: mongoose.Schema.Types.ObjectId,
		ref: 'User'
	},
	title: {
		type: String,
		required: true
	},
	content: {
		type: String,
		required: true
	},
	date: {
		type: Date,
		default: Date.now
	}
});

const Post = mongoose.model('post', PostSchema);
module.exports = Post;

分数

我正在按照所有步骤进行操作,但是在获取所有用户时,仍然收到空的Post数组

当您添加新帖子时,还必须更新的posts字段userSchema

const newPost = await Post.insert(/* post */);
await User.findOneAndUpdate({ _id: newPost.user }, { $push: { posts: newPost._id }, { new: true });

我也试图在每个帖子中获取用户名,而不只是ID。我正在使用“填充”,但仍只返回用户ID

.populate('user');尝试s

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章