如何操作使用mongoose从mongo db返回的数据

我用mongo创build了一个本地数据库(实际上使用这个教程 )

它有一个名为“简单”的数据库和名为“人”的集合。 然后,我将每个元素导入json

{ "id": 1, "guid": "1581cfde-f2fc-44f8-8953-511331e943ab", "isActive": true, "firstName": "Ilene", "lastName": "Kent", "email": "carolegoodman@intrawear.com" } 

然后,在我的节点应用程序中创build架构和人员模型

 var express = require('express'); var path = require('path'); var mongoose = require('mongoose'); var app = express(); app.set('port', (process.env.PORT || 5000)); mongoose.connect('mongodb://localhost/simple') var personSchema = { firstname: String, lastname: String, email: String } var Person = mongoose.model('Person', personSchema, 'people') app.get('/users', function(req,res){ Person.find(function(err, doc){ var x = doc[0] console.log(x) console.log(Object.keys(x)) res.send(200); }); }); 

在Person模型上调用find()我得到logging(对于console.log(doc [0])) – 文档中的第一个项目返回:

 { _id: 548e41afa0bad91d53f34cce, id: 0, guid: 'af6a931d-1801-4662-9d52-c95dc97bac22', isActive: false, firstName: 'Janna', lastName: 'Shelton', email: 'crossoconnor@geekology.com' } 

但是我的问题是,当我在doc [0](即doc [0] .firstName)上查找firstName属性时,我得到一个未定义的。

我试过诊断这个和Object.keys(doc [0])给我:

 [ '$__', 'isNew', 'errors', '_maxListeners', '_doc', '_pres', '_posts', 'save', '_events' ] 

这意味着当你想从返回的元素中访问数据时,我怀疑必须有一些特殊的mongoose方法 – 但是我在文档或这里找不到答案。

谢谢

您收到一组文档。 Mongoose API

 doc[0].get('firstName') 

当您只需要一个可以自由处理的文档的普通JavaScript表示forms时,请将lean()添加到您的Mongoose查询链中:

 app.get('/users', function(req,res){ Person.find().lean().exec(function(err, docs){ var x = docs[0] console.log(x) console.log(Object.keys(x)) res.send(200); }); }); 

在你的查询中使用.lean()如下。

 db.collection.find().lean().then(function(data){})