2 つのイベントがあるとします。
{"id":1, "name":"event1"},
{"id":2, "name":"event2"}
そして、イベントを取得するための REST API を作成しています。この API は、オプションのパラメーター を受け取ります。パラメーターがid
存在する場合は、その ID に固有のイベントのみを返し、null の場合はすべてのイベントを返します。
したがって、 のみapi/events?id=1
を返す必要がありますが、 との両方を返します。現在、if-else ステートメントを使用していますが、オプションのパラメーターが増えると、これは明らかにスケーラブルではありません。代わりにこれを MongoDB クエリとして表現する方法はありますか?event1
api/events
event1
event2
コード:
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ドライバーを使用しています。