Possiamo effettuare il sorting dei dati di MongoDB in Node.js utilizzando ExpressJS.
Abbiamo la seguente tabella:
<table>
<thead>
<tr>
<th>ID
<a href="?order=id&sort=asc">+</a>
<a href="?order=id&sort=desc">-</a>
</th>
<th>
Name
<a href="?order=name&sort=asc">+</a>
<a href="?order=name&sort=desc">-</a>
</th>
</thead>
<tbody>
</tbody>
</table>
La nostra soluzione:
app.get('/documents', (req, res) => {
let sort = {};
let allowed = ['id', 'name'];
if(req.query.sort) {
let order = req.query.order;
if(allowed.indexOf(order) !== -1) {
sort[order] = (req.query.sort === 'asc') ? 1 : -1;
}
}
db.documents.find().limit(10).sort(sort).then(docs => {
//...
}).catch(err => {
//...
});
});