用于节点的Mongo findOne函数不返回geometrty数据

时间:2016-09-09 13:07:16

标签: javascript node.js mongodb

我在尝试让mongo正确返回几何数据方面遇到了一些麻烦。

当我直接在mongo shell中运行db.shapes_houses.findOne({ 'properties.IDENTIFCAT': '0373100000004063' }函数时,我得到了我需要的正确结果:

{
    "_id" : ObjectId("576bfc6d669adc5c2556676b"),
    "type" : "Feature",
    "properties" : {
        "IDENTIFCAT" : "0373100000004063",
        "VOETPRINT" : 62.423811
    },
    "geometry" : {
        "type" : "Polygon",
        "coordinates" : [
            [
                [
                    105719.1640625,
                    515371.03125
                ],
                [
                    105715.9921875,
                    515375.4375
                ],
                [
                    105722.84375,
                    515380.375
                ],
                [
                    105725.3359375,
                    515382.15625
                ],
                [
                    105728.5,
                    515377.75
                ],
                [
                    105726.015625,
                    515375.96875
                ],
                [
                    105719.1640625,
                    515371.03125
                ]
            ]
        ]
    }
}

然而,当我通过我的节点应用程序运行db.Object.findOne({ 'properties.IDENTIFCAT': '0373100000004063' }).exec()时,我没有得到任何几何数据,只返回id,type和properties。

有人知道为什么会这样吗?我正在把头发撕掉。

谢谢!

2 个答案:

答案 0 :(得分:1)

MongoDB driver NodeJS使用callbacks来处理查询结果,请参阅reference

将它用于这样的回调,它应该可以正常工作

db.Object.findOne({ 'properties.IDENTIFCAT': '0373100000004063' },function(err,result){
  if(!err){
     console.log(result)
   }
})

答案 1 :(得分:0)

解决方法是按照here的说明将typekey选项添加到exports.schema.geometry