在最近的设计数据库时,犯了一个低级的错误,就是设置内置文档是定义了错误了,导致数据取不出,去找了很多资料都无法解决。最后看了一了一下自己设置的model文件。配置错误,所以导致数据取不出了。
数据库时这样设计的
var mongoose = require('mongoose'), Schema = mongoose.Schema; //realTimeloginSchema 停车场运行实时监控 var realTimeloginSchema = new Schema({ realuserId: {type: String}, //用户ID realPwd: {type: String}, //用户密码 realAddTime: {type: Date}, //注册时间 realLoginTime: {type: Date}, //登录时间 realRoot:{type: Boolean,default:false}, //是否是超级用户,默认是false realPower: {type: Boolean,default:false}, //添加用户权限,默认是false realpark:{ parkId:{type:String}, //停车场名称 parkName:{type:String}, //停车场ID scale: {type: Number}, //停车场总车位 pionts:{ lng :{type:String}, //经度 lat :{type:String} //纬度 } } } ); module.exports = mongoose.model("realTimelogin ", realTimeloginSchema);
自己在可视化工具robomongo是这样数据是这样的:
{ "_id" : ObjectId("58afe978c0120986cddacf6c"), "realPwd" : "124", "realuserId" : "124", "realAddTime" : ISODate("2017-02-26T10:05:51.643Z"), "realPower" : true, "realRoot" : false, "realpark" : [ { "parkId" : "99999888881474167822", "parkName" : "小猫停车场", "scale" : 200 }, { "parkId" : "0755000021433988491", "parkName" : "软件产业基地停车场", "scale" : 500 }, { "parkId" : "18682397901474189348", "parkName" : "新版测试停车场", "scale" : 1250 } ] }
console.log(doc.realpark);是可以打印数据的,但是一直取不到realpark的长度,所以无法遍历对象。
之后查看了一下官网文档,才知道自己定义错误,应该这样定义:
var mongoose = require('mongoose'), Schema = mongoose.Schema; //realTimeloginSchema 停车场运行实时监控 var realTimeloginSchema = new Schema({ realuserId: {type: String}, //用户ID realPwd: {type: String}, //用户密码 realAddTime: {type: Date}, //注册时间 realLoginTime: {type: Date}, //登录时间 realRoot:{type: Boolean,default:false}, //是否是超级用户,默认是false realPower: {type: Boolean,default:false}, //添加用户权限,默认是false realpark: {type: Object, default: []} /* realpark:{ parkId:{type:String}, //停车场名称 parkName:{type:String}, //停车场ID scale: {type: Number}, //停车场总车位 pionts:{ lng :{type:String}, //经度 lat :{type:String} //纬度 } } */ } ); module.exports = mongoose.model("realTimelogin ", realTimeloginSchema);
这样就可以得到内嵌对象的长度,遍历对象。