假设我有两个事件:
{"id":1, "name":"event1"},
{"id":2, "name":"event2"}
我正在编写一个 REST API 来检索事件。此 API 采用可选参数 ,id
如果存在,则仅返回特定于该 id 的事件,如果为 null,则返回所有事件。
所以api/events?id=1
应该event1
只返回,而同时api/events
返回event1
and event2
。目前我正在使用 if-else 语句,但如果我有更多可选参数,这显然是不可扩展的。有没有办法将其表达为 MongoDB 查询?
代码:
app.get('/api/events', function (req, res) {
var _get = url.parse(req.url, true).query,
eventCollection = db.collection('events');
// Parameters passed in URL
var page = (_get.page) ? _get.page * 10 : 0,
org_id = (_get.org_id) ? parseInt(_get.org_id) : "";
if (org_id == "") {
eventCollection.find({
}, {
limit: 10,
skip: page
}).toArray(function(err, events) {
if (!err) {
res.json(
events
);
}
});
} else {
eventCollection.find({
org_id: org_id
}, {
limit: 10,
skip: page
}).toArray(function(err, events) {
if (!err) {
res.json(
events
);
}
});
}
});
PS 我正在为 MongoDB 使用 Node.js Javascript 驱动程序。