2015-12-01 128 views
0

我一直在使用Yeoman构建一个Angular + Node注释应用程序。类型错误:TypeError:无法读取未定义的属性'_id'

我无法解决错误“TypeError:无法读取未定义的属性'_id'”。

这是我/api/comment/index.js文件

'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;

这是我comment.controller.js文件

/ 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); 
 
    }); 
 
};

+0

哪里错误跟踪? –

回答

0

Loo国王在你提供的代码,问题是req.bodyundefined

通过做:if (req.body._id),你仍然试图访问未定义的属性。

正确的if语句应该是:

if (req.body && req.body._id) { 
    // do stuff 
} 
+0

感谢您的回复。但它没有解决问题。 –

+0

它解决了你报告的错误。现在,如果你需要帮助,请给我们一些细节。 –

相关问题