我有一个用于geoJSON多边形对象的mongoose模式,结构如下:
var polygonZoneSchema = new mongoose.Schema({
location: {
'type': {
type: String,
enum: "Polygon",
default: "Polygon"
},
coordinates: {
type: [[[Number]]]
}
},
zoneType: ObjectId,
riskiness: {
type: Number,
default: 0
}
});
在我的控制器中,我有一个列出所有多边形的函数:
polyZone.find({}).exec(function (err, collections) {
console.log(collections[0].location.coordinates);
if (err) {
res.status(400);
return res.send({reason: err.toString()});
}
res.send(collections);
});
通过mongo命令行检查我的数据库时,该集合包含:
{
"_id": ObjectId("55fb6e7ab228f7343367116d"),
"location": {
"type": "Polygon",
"coordinates": [
[
[0, 0],
[0, 1],
[1, 1],
[1, 0],
[0, 0]
]
]
}
} {
"_id": ObjectId("55fb6e7ab228f7343367116e"),
"location": {
"type": "Polygon",
"coordinates": [
[
[1, 1],
[1, 2],
[2, 2],
[2, 1],
[1, 1]
]
]
}
}
但是,当使用我的控制器功能时,返回的对象有一个空坐标数组:
[
{
"_id": "55fb6e7ab228f7343367116d",
"riskiness": 0,
"location": {
"coordinates": [],
"type": "Polygon"
}
},
{
"_id": "55fb6e7ab228f7343367116e",
"riskiness": 0,
"location": {
"coordinates": [],
"type": "Polygon"
}
}
]
这与猫鼬有关吗?我该如何解决?
答案 0 :(得分:0)
是因为每个坐标中有2个数字,而模式只指定一个?我应该
coordinates: {
type: [[[Number]]]
}
阅读
coordinates: {
type: [[[Number, Number]]]
}
答案 1 :(得分:0)
事实证明,mongoose中存在嵌套数组的错误。它已被插入固定在4..3您可以在这里阅读更多相关信息https://github.com/Automattic/mongoose/issues/1361
在那之前我发现通过使用Model.collection我可以使用核心mongo驱动程序,它与嵌套数组没有任何问题