0

I have been working on Building an Angular + Node Comment App using Yeoman.

I am unable to resolve the error "TypeError: Cannot read property '_id' of undefined".

This is my /api/comment/index.js file

'use strict';

var express = require('express');
var controller = require('./comment.controller');
var auth = require('../../auth/auth.service');
var router = express.Router();

router.get('/:id', controller.show);
router.put('/:id', controller.update);
router.patch('/:id', controller.update);
router.get('/', controller.index);
router.post('/', auth.isAuthenticated(), controller.create);
router.delete('/:id', auth.isAuthenticated(), controller.destroy);
 
module.exports = router;

This is my comment.controller.js file

/ Gets a single Comment from the DB
exports.show = function(req, res) {
  Comment.findByIdAsync(req.params.id)
    .then(handleEntityNotFound(res))
    .then(responseWithResult(res))
    .catch(handleError(res));
};

// Updates an existing Comment in the DB
exports.update = function(req, res) {
  if (req.body._id) {
    delete req.body._id;
  }
  Comment.findByIdAsync(req.params.id)
    .then(handleEntityNotFound(res))
    .then(saveUpdates(req.body))
    .then(responseWithResult(res))
    .catch(handleError(res));
};

// Deletes a Comment from the DB
exports.destroy = function(req, res) {
  Comment.findByIdAsync(req.params.id)
    .then(handleEntityNotFound(res))
    .then(removeEntity(res))
    .catch(handleError(res));
};

// Get list of comments
exports.index = function(req, res) {
  Comment.loadRecent(function (err, comments) {
    if(err) { return handleError(res, err); }
    return res.json(200, comments);
  });
};
 
// Creates a new comment in the DB.
exports.create = function(req, res) {
  // don't include the date, if a user specified it
  delete req.body.date;
 
  var comment = new Comment(_.merge({ author: req.user._id }, req.body));
  comment.save(function(err, comment) {
    if(err) { return handleError(res, err); }
    return res.json(201, comment);
  });
};

4

1 回答 1

0

查看您提供的代码,问题req.bodyundefined.

通过这样做: if (req.body._id),您仍在尝试访问未定义的属性。

正确的 if 语句是:

if (req.body && req.body._id) {
    // do stuff
}
于 2015-12-01T08:46:52.707 回答