NodeJS error help: empty object req.params.id

怎甘沉沦 提交于 2020-01-22 04:03:24

问题


I am getting an error on my program - any insight would be appreciated thanks.

Cannot read property '_id' of undefined
    at eval (eval at compile (C:\Users\Adama Sawadogo\node_modules\ejs\lib\ejs.js:626:12), <anonymous>:13:34)
    at responses (C:\Users\Adama Sawadogo\node_modules\ejs\lib\ejs.js:656:17)
    at tryHandleCache (C:\Users\Adama Sawadogo\node_modules\ejs\lib\ejs.js:254:36)
    at View.exports.renderFile [as engine] (C:\Users\Adama Sawadogo\node_modules\ejs\lib\ejs.js:459:10)
    at View.render (C:\Users\Adama Sawadogo\node_modules\express\lib\view.js:135:8)
    at tryRender (C:\Users\Adama Sawadogo\node_modules\express\lib\application.js:640:10)
    at Function.render (C:\Users\Adama Sawadogo\node_modules\express\lib\application.js:592:3)
    at ServerResponse.render (C:\Users\Adama Sawadogo\node_modules\express\lib\response.js:1012:7)
    at C:\Users\Adama Sawadogo\Desktop\Web Development\public\routes\responses.js:14:13
    at C:\Users\Adama Sawadogo\Desktop\Web Development\public\node_modules\mongoose\lib\model.js:4784:16
    at model.Query.<anonymous> (C:\Users\Adama Sawadogo\Desktop\Web Development\public\node_modules\mongoose\lib\query.js:2119:5)
    at model.Query._wrappedThunk [as _findOne] (C:\Users\Adama Sawadogo\Desktop\Web Development\public\node_modules\mongoose\lib\helpers\query\wrapThunk.js:16:8)
    at C:\Users\Adama Sawadogo\Desktop\Web Development\public\node_modules\kareem\index.js:369:33
    at processTicksAndRejections (internal/process/task_queues.js:75:11)


var express        =require("express"),
router         = express.Router({mergeParams: true}),
    Question       =require("../models/question"),
    Response       = require("../models/responses");

routes/responses.js

This is the response.js route file. I got it to retrieve the question data >using find() instead of findById.

router.get("/",function(req,res){
    //create new data
    Question.findById(req.params.id, function(err,question){
        if(err && !req.params.id){ 
            res.send(err);
        }else {

        res.render("responses", {question:question})
    }});
    //redirect

    });
    router.post("/", function(req,res){
        Question.findById(req.params.id, function(err, question){
            if (err){
                console.log(err);
            }else{
                Response.create(req.body.response, function(err, response){
                    if(err){
                        res.redirect("/")
                    }else{
                        question.responses.push(response);
                        question.save();
                        res.redirect("askexperts/" + question._id +"/reply")
                    }
                })
            }
        })
    })


module.exports = router;

responses.ejs file

Here's the template I am trying to render

<%-include("./partials/header.ejs")%>
<div class="container" id="margin-top">
    <h1>Welcome to the comment page</h1>
    <form action="/askexperts/<%=question._id%>/reply" method="POST">
        <div class="form-group">
            <textarea class="form-control" name="response[text]" id="" cols="90" rows="6" placeholder="Enter your reply here"></textarea>

        </div>

    <button class="btn btn-success" type="submit">Reply</button>
    </form>

</div>

Thank you in advance

来源:https://stackoverflow.com/questions/59805677/nodejs-error-help-empty-object-req-params-id

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!