Функция контроллера для поиска пользователя:
router.get("/:id", usersController.getUser)
getUser: async (req, res, next) => {
try {
const user = await User.findById(req.params.id)
if (!user) {
return res.status(404).json({ message: "User not found" })
}
return res.status(200).json({ user })
} catch (error) {
return next(error)
}
}
И я получаю этот ответ:
{
"user": [
{
"posts": [
"5e857785591a6c1047341c60",
"5e85779f591a6c1047341c61"
],
"_id": "5e84e15ef2ae067df522c164",
"username": "rick",
"email": "rickk3@gmail.com",
"password": "$2b$10$FRHysk3eBMEOfS3FAT1nEe9voFH9yETR.3V1ZTJkg8Ekwtt6TlJ.W",
"createdAt": "2020-04-01T18:45:50.029Z",
"updatedAt": "2020-04-02T05:26:55.722Z",
"__v": 9
}
]
}
router.delete("/:id/delete", postsController.deletePost)
Удаление функции пост-контроллера:
deletePost: async (req, res, next) => {
try {
const post = await Post.findByIdAndDelete(req.params.id)
if (!post) {
return res.status(200).json({ error: "No post found"})
}
res.status(200).json({ post })
} catch(error) {
console.log(error)
}
}
localhost:3000/api/v1/posts/5e857785591a6c1047341c60/delete
После удаления сообщения я получаю следующий ответ:
{
"post": {
"_id": "5e857785591a6c1047341c60",
"title": "helloooo",
"description": "hello there",
"user": "5e84e15ef2ae067df522c164",
"createdAt": "2020-04-02T05:26:29.637Z",
"updatedAt": "2020-04-02T05:26:29.637Z",
"__v": 0
}
}
Теперь после удаления сообщение, я хочу удалить ссылку ObjectID
, которую имеет сообщение в коллекции users
.
Прямо сейчас в базе данных документ пользователя выглядит следующим образом:
{
"_id" : ObjectId("5e84e15ef2ae067df522c164"),
"posts" :
[
ObjectId("5e857785591a6c1047341c60"),
ObjectId("5e85779f591a6c1047341c61")
],
"username" : "rick",
"email" : "rickk3@gmail.com",
"password" : "$2b$10$FRHysk3eBMEOfS3FAT1nEe9voFH9yETR.3V1ZTJkg8Ekwtt6TlJ.W",
"createdAt" : ISODate("2020-04-01T18:45:50.029Z"),
"updatedAt" : ISODate("2020-04-02T05:26:55.722Z"),
"__v" : 9
}