如何对 NeDB 数据库进行排序以获取响应? (Javascript 回调/箭头函数语法混乱)
Posted
技术标签:
【中文标题】如何对 NeDB 数据库进行排序以获取响应? (Javascript 回调/箭头函数语法混乱)【英文标题】:How to sort NeDB database in get response? (Javascript callback/arrow function syntax confusion) 【发布时间】:2020-07-13 20:03:08 【问题描述】:我有一个快速服务器和一个简单的 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: Cannot read property 'sort' of 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() 函数中,但此时我完全无法理解,我相信我只是不理解语法。我找到了排序的例子,但不是在这种情况下。
【问题讨论】:
【参考方案1】:你可以写这样的东西来通过时间戳对其进行排序:
database.find().sort("timestamp":-1).exec(function(err, data)
if (err)
response.end();
return;
console.log(data);
);
【讨论】:
以上是关于如何对 NeDB 数据库进行排序以获取响应? (Javascript 回调/箭头函数语法混乱)的主要内容,如果未能解决你的问题,请参考以下文章
如何对从 AJAX 请求中获取的响应进行排序并将它们作为 <option> 映射到 <select> 标记?
如何对每对之间的差异求和,然后使用 nedb 对每对的结果求和