[英]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.