问题
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