#node.js #reactjs #mongodb #express
Вопрос:
Возможно ли это? Я все еще учусь в этом путешествии. Итак, я пытаюсь выяснить, возможно ли это получить. Я создаю блог, используя node.js, mongodb, мангуст и expressjs. У меня есть такой маршрут, как этот:
const router = require("express").Router()
const Comment = require("../models/Comment")
const Post = require("../models/Post");
router.delete("/posts/:id/comment/:id", async (req, res) =>{
}
Итак, в принципе, мы хотим создать комментарий по этому пути и под идентификатором этого сообщения.
Итак, могу ли я получить идентификатор поста? Я имею в виду, могу ли я получить идентификатор поста, на котором сделан этот комментарий? Я могу получить идентификатор параметров комментария, но я не знаю, как получить сообщения/идентификатор. Я сделал что-то вроде этого:
const post = Post.findById(req.params.id) this didnt get the post.
const comment = Comment.findbyId(req.params.id) this found the comment id.
Если это возможно, пожалуйста, скажите мне, как это сделать. Если это невозможно, любезно предоставьте мне альтернативный способ сделать это. Спасибо.
Ответ №1:
Проблема в том, что вы используете одно и то же имя для обоих параметров маршрута ( :id
), поэтому экспресс-маршрутизатор не может отличить, хотите ли вы опубликовать :id
или прокомментировать :id
. Переименуйте /posts/:id/comment/:id
во что-то вроде /posts/:postID/comment/:commentID
, и тогда оба параметра будут доступны в вашем коде как req.params.postID
и req.params.commentID
.
Комментарии:
1. Большое спасибо. Это решило мою проблему.
Ответ №2:
Вы используете id
как идентификатор записи, так и идентификатор комментария. req.params
вы получите только последнее id
, чего, вероятно, вы не хотите. Вместо этого вы могли бы семантически дифференцировать эти идентификаторы и использовать для них более четкие имена. Например:
router.delete("/posts/:post_id/comment/:comment_id", async (req, res) =>{
//your code
}
Комментарии:
1. опереди меня в этом 😀
2. 😀 в считанные секунды