如何操作使用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){})