我有以下查询:
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中运行查询时,会发送预期的结果。但是,上面引号中的日志返回[]。我在这里做错了吗?
答案 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)}
});