Итак, я разобрался с предыдущими проблемами и мне просто нужно заполнить пользовательский документ постами. В настоящее время пользовательский документ выглядит следующим образом:
{
"posts": [],
"_id": "5e75cf827ef14514f69c6714",
"username": "dio",
"email": "dio123@gmail.com",
"password": "$2b$10$fwV.KaZG.5tjtmMxQ9NNE.7.XAh6pzLFgf85z9BpPVOgFguR2inGO",
"createdAt": "2020-03-21T08:25:38.459Z",
"updatedAt": "2020-03-21T08:25:38.459Z",
"__v": 0
}
Итак, я сделал это при создании сообщения, чтобы иметь возможность заполнить его позже.
newPost: (req, res) => {
const data = {
title: req.body.title,
content: req.body.content,
user: req.user.userId
}
Post.create(data, (err, newPost) => {
console.log(data, "data")
if (err) {
return res.status(500).json({ error: err })
} else if (!newPost) {
return res.status(400).json({ message: "No Post found" })
} else if (newPost) {
User.findById(req.user.userId, (err, user) => {
user.Posts = user.Posts.concat(newPost._id)
return res.status(200).json({ newPost, user })
})
}
})
}
После этого, когда я возвращаю пользователя из Приведенный выше оператор возврата выглядит следующим образом:
{
posts: [ 5e75d89fa048e321f704453b ],
_id: 5e75cf827ef14514f69c6714,
username: 'dio',
email: 'dio123@gmail.com',
password: '$2b$10$fwV.KaZG.5tjtmMxQ9NNE.7.XAh6pzLFgf85z9BpPVOgFguR2inGO',
createdAt: 2020-03-21T08:25:38.459Z,
updatedAt: 2020-03-21T08:25:38.459Z,
__v: 0
}
Каждый раз, когда я создаю новое сообщение, я выделяю массив публикаций, который содержит objectID идентификаторов сообщений, которые пользователь только что создал, но он только выдвигает objectId последней записи. Почему он не запоминает предыдущие?
Кроме того, я хочу получать сообщения пользователя:
getUserPosts: async (req, res) => {
try {
const user = await User.findById(req.params.id).populate("posts");
if (!user) {
return res.status(400).json({ error: "No user" });
}
return res.status(200).json({ userPosts: user.posts });
} catch (err) {
return res.status(500).json({ error: "Server error" });
}
}
Так как пользовательский документ, сохраненный в базе данных, содержит пустой массив сообщений, которыми я являюсь не в состоянии заселить его. Пожалуйста, помогите.