Mongoose - 查询不返回任何内容

时间:2015-06-15 01:46:45

标签: node.js mongodb mongoose

我有以下查询:

app.get('/matches/:latMin/:latMax/:lonMin/:lonMax', function(req, res){
    var matches = City.find({
        "latitude": {$gt : String(req.param.latMin), $lt : String(req.params.latMax) }, 
        "longitude" : {$gt : String(req.param.lonMin), $lt : String(req.param.lonMax)}
    });
    matches.exec(function(err, match){
                 if(err){
                    console.log(err);
                     return res.send(err);
                 }
                console.log(match);
                res.json(match);
            });     
});

这是我的架构:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

module.exports = mongoose.model('City', new Schema({
    zip : {type : String, default: ''},
    latitude : {type : String, default: ''},
    longitude : {type: String, default: ''},
    city : {type: String, default: ''},
    state : {type: String, default: ''},
    county : {type: String, default: ''}
}), 'locations');

当我在Mongo shell中运行查询时,会发送预期的结果。但是,上面引号中的日志返回[]。我在这里做错了吗?

1 个答案:

答案 0 :(得分:0)

我不知道你是否想要使用req.param或者它只是一个错字。无论如何,{@ 3}}已弃用,您应该使用req.params

我已经设置了您的方案并且查询正在运行。替换代码中的var matches以获取以下内容:

var matches = City.find({
    "latitude": {$gt : String(req.params.latMin), $lt : String(req.params.latMax) }, 
    "longitude" : {$gt : String(req.params.lonMin), $lt : String(req.params.lonMax)}
});