在nodecelar骨干nodejs示例中,我有代码:
exports.findById = function(req, res) {
var id = req.params.id;
console.log('Retrieving wine: ' + id);
db.collection('wines', function(err, collection) {
collection.findOne({'_id':new BSON.ObjectID(id)}, function(err, item) {
res.send(item);
});
});
};
我有错误:
你能帮帮我吗?感谢。TypeError:无法读取未定义的属性“findOne”。
答案 0 :(得分:0)
错误表明你试图在未定义的变量上调用findOne
。
db.collection('wines', function(err, collection) {
collection.findOne(...);
});
您在collection
上调用该函数,因此此时必须未定义集合。我的猜测是db调用失败,err
不为空。
您应该通过快递处理错误或自行返回错误消息来处理错误。
// use the "next" callback
exports.findById = function(req, res, next) {
var id = req.params.id;
console.log('Retrieving wine: ' + id);
db.collection('wines', function(err, collection) {
// let express handle the error for you
if (err) return next(err);
// or
if (err) res.send({ 'error': 'An error has occurred' });
else {
collection.findOne({ '_id': new BSON.ObjectID(id) }, function(err, item) {
res.send(item);
});
}
});
};