У меня есть сервер express и простая база данных NeDB. Я могу успешно получить всю базу данных примерно так:
app.get('/api', (request, response) => {
//queuery the database for everything
db
.find({}, (error, data) => {
if (error) {
response.end();
console.log(error)
return;
}
console.log(data)
response.json(data)
})
Но я заметил, что результаты по некоторым причинам не совпадают с порядком файла базы данных. Я хочу отсортировать по одной из меток времени. База данных выглядит так:
...
{"lat":1,"lon":7,"timestamp":1585781054239,"_id":"3cZvJfQyLEXK0SZo","createdAt":{"$$date":1585781054240},"updatedAt":{"$$date":1585781054240}}
{"lat":1,"lon":2,"timestamp":1585781047536,"_id":"DN9bpd1FygEowgtc","createdAt":{"$$date":1585781047538},"updatedAt":{"$$date":1585781047538}}
{"lat":1,"lon":6,"timestamp":1585781052398,"_id":"Dzp6x0xo3QM960Rm","createdAt":{"$$date":1585781052400},"updatedAt":{"$$date":1585781052400}}
{"lat":1,"lon":5,"timestamp":1585781051174,"_id":"KswtMYzV2QBE3xkb","createdAt":{"$$date":1585781051176},"updatedAt":{"$$date":1585781051176}}
...
По общему признанию, я не совсем понял, как работают обратные вызовы в этом коде. Я пробовал что-то вроде следующего, но он возвращает ошибку 500 GET клиенту и возвращает «TypeError: Невозможно прочитать свойство 'sort' undefined" на сервер:
app.get('/api', (request, response) => {
//queuery the database for everything
db
.find({}, (error, data) => {
if (error) {
response.end();
console.log(error)
return;
}
// console.log(data)
// response.json(data)
})
.sort({ createdAt: -1 }, (data) => {
console.log(data)
response.json(data)
});
});
Интересно, должно ли это быть вложенный в функцию .find (), но на данный момент я слишком занят своей головой и считаю, что просто не понимаю синтаксис. Я нашел примеры сортировки, но не в этом контексте.