[英]Node express + MongoDB - get with param
我正在尝试使用参数创建get调用。 到目前为止,我已经创建了get,它从MongoDB返回整个JSON:
router.get('/movies', function (req, res, next) {
var movies = req.db.get('movies');
movies.find({}, function (err, docs) {
res.json({length: docs.length, records: docs});
});
});
如何创建仅返回某些年份或标题的电影或某些年份的电影,但仅返回德拉玛类型的电影的get?
我正在尝试:
router.get('/movies/:title', function (req, res, next) {
var title = res.title;
var movies = req.db.get('movies');
movies.find({title: title}, function (err, docs) {
res.json({length: docs.length, records: docs});
});
});
但是邮递员返回空对象。 我究竟做错了什么?
要仅获取某些年份的 电影 或标题或某些年份的电影,而仅获取“戏剧”类型的电影,则需要以以下方式定义REST API:将值列表作为URL请求参数传递给然后可以用作过滤器。
例如,如果您使用URL测试API:
http://your.api.com/movies?title=foo
路由器将仅获得title = "foo"
电影。
如果您将此URL用于GET请求:
http://your.api.com/movies?year=1996
路由器仅获得1996年以来的电影。
网址
http://your.api.com/movies?year=1996&type=drama
仅获得1996年以来的电影以及具有戏剧性的电影。
在您的路由器实现中,使用包含路由中每个查询字符串参数属性的req.query
对象作为find()
查询。 如果没有查询字符串,它将返回一个空对象{}
,如果在find()
方法中使用该对象,则默认情况下将返回该集合中所有可用的电影文档。 因此,您的路由器将具有以下内容:
router.get('/movies', function (req, res, next) {
var movies = req.db.get('movies'),
query = req.query;
// convert year parameter string to int if it exists
if (query.hasOwnProperty("year")){
query["year"] = parseInt(query.year);
}
movies.find(query, function (err, docs) {
res.json({length: docs.length, records: docs});
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.