所以我在mongolabs上有一个看起来像这样的mongodb:
收集"新闻"
[{
"_id": {
"$oid": "542aab88e4b0e67da1edd1bd"
},
"year": 2014,
"data": {
"someinfo":"cool info"
}
}]
在节点上我有以下内容:
//dependencies
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
//Setting up the schemas
var newsSchema = new Schema({
year: String,
data: Object
});
mongoose.model('news',newsSchema);
//routes
var mongolabs = express.Router();
mongolabs.route('/List/:type1/:year')
.get(function(req, res){
mongoose.model(req.params.type1).find({year:req.params.year}, function(err,suc) {
res.jsonp(suc);
});
});
app.use('/mongo', mongolabs);
不幸的是,当我去http:/// mongo / List / news / 2014时,它返回空。 我已经尝试了所有我能想到的东西,不用说我是mongoose,node和mongodb的新手。
答案 0 :(得分:1)
您可能正在将null
传递给.find()
方法。
你这样做:
{ year: req.params.type1.year }
,当你应该做的时候:
{ year: req.params.year }
答案 1 :(得分:1)
您尝试查询number
值为string
的值,因此结果为空。
尝试在您的参数之前添加req.params.years
,将unary plus
转换为数字。
{ year: +req.params.year }
您也可以使用parseInt()函数:
var year = parseInt(req.params.years, 10);