Backbone示例,Nodecelarr

时间:2016-09-10 19:48:08

标签: node.js backbone.js

在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”。

你能帮帮我吗?感谢。

1 个答案:

答案 0 :(得分:0)

无法读取未定义的属性“findOne”。

错误表明你试图在未定义的变量上调用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);
            });
        }
    });
};