在最近的设计数据库时,犯了一个低级的错误,就是设置内置文档是定义了错误了,导致数据取不出,去找了很多资料都无法解决。最后看了一了一下自己设置的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);
这样就可以得到内嵌对象的长度,遍历对象。