使用mongoDB在节点中查找数据时为什么无法读取属性?

时间:2015-09-26 07:31:44

标签: node.js mongodb

以下是我的代码

var mongodb = require('mongodb');
var MongodbClient = mongodb.MongoClient;

MongodbClient.connect('mongodb://localhost/test', function(err, db) {
    db.collection('contact', function(err, collection) {
        collection.find({}, function(err, rows) {
            for(var index in rows)
                console.log(rows[index]);
        });
    });

    var contact = db.collection('contact');
    contact.insert({
        name:'Fred',
        tel:'123456789',
        address: 'Mars',
    }, function(err, docs) {
        if(err){
            console.log("failed")
            return;
        }
        else{
            console.log('Success');
        }
    });

    contact.find({}, function(err, docs) {
        if(err) {
            console.log("Can not find any!");
            return;
        }
        for(var index in docs) {
            console.log(docs.length);
            var doc = docs[index];
            console.log(doc.name);
        }
    });
});

我可以使用mongodb shell找到数据,但在节点中,它显示

TypeError: Cannot read property 'name' of null

在console.log(doc.name)上。

并且还显示" undefined"当尝试console.log(docs.length);

我做错了吗?

2 个答案:

答案 0 :(得分:1)

您没有正确使用mongodb节点API:

你应该:

contact.find({}).toArray(function(err,results) {
  if (err) {
    console.debug(err);
    return;
  }

  console.debug(JSON.stringify(results));
});

More on docs.

答案 1 :(得分:0)

您可以先尝试 JSON.stringify(object),然后再尝试 JSON.parse(object),然后尝试访问该属性。

let xxxxxxxx = async (req, res) => {

let resultSet = [];
let object;
let perDayData = await yyyyyyyyyyy.find({});


perDayData = JSON.stringify(perDayData);
perDayData = JSON.parse(perDayData);

console.log(perDayData [0] .field); }