2016-05-22 113 views
2

我正在運行處理REST Api調用的node.js服務器。 這些調用的響應將是一個或MongoDB對象(JSON)的列表。如何自動創建REST API node.js/MongoDB

我已閱讀過有關參數以及如何處理它們的內容。但有沒有辦法自動做到這一點?

可以說我有一個用戶採集:

name: String, 
hobby: String, 
age: Number 

現在我想是年齡= 18的所有用戶的列表。

我知道我能恢復參數如下:

url: http://localhost:3000/user?age=18&hobby=something 

var app = express(); 
app.get('/user', function (req,res) { 

    var age=req.query.age; 
    var hobby=req.query.hobby; 

    mondodbUser.find(...); 
} 

但假設用戶有10個不同的屬性,我有15個不同的類別。我不能動態地做到這一點?所以我不必恢復每個可能的參數?

我想能夠使用所有給定參數的方式搜索MongoDB。

我希望我能夠表達自己:D謝謝!

+0

_assume用戶有10個不同的屬性,我有15個不同的Collections_,可以請你澄清一下嗎? – chridam

+0

我不想手動從URI中恢復每個參數,並在mongoDB的find()方法中使用它,而只是使用URI中給出的任何參數調用find()方法。 – HideAndSeek

+0

也許我過時了這一點,我可以試着檢索每個參數,只要將它提供給find方法,即使它的NULL/undefined? – HideAndSeek

回答

2

由於req.query返回查詢字符串之後的JS對象進行解析,其中對象將具有在查詢字符串定義的屬性,例如:

/user?name=andrew&age=22

req.query將返回對象{ name: "andrew", age: "22" }

因此只要對象中的屬性與底層集合文檔模式匹配,它就可以用作find()方法參數。

然後,您可以做:

app.get('/user', function (req, res) { 
    User.find(req.query, function (err, users){ ... }); 
}