簡體   English   中英

Node Express + MongoDB-通過參數獲取

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM