从mongoDB集合中获取N条最新记录时的回调函数

时间:2020-08-22 02:40:03

标签: javascript mongodb express mongoose

我在编写用于从mongoDB集合中获取最新N条记录的回调时遇到麻烦。我正在创建一个名为/ pp的Express路由,该路由将返回数据库中的内容。我曾经只返回其中的所有内容,所以像这样:

$('#appended').on('input', '.amount', function(){
    var amount = parseFloat($(this).val());
  var total  = parseFloat($('#total').text())
  var new_total = amount+total;
  
  $('#total').text(new_total)
})

(PPovertime是我的收藏的名称)

但是我现在想将最后N条记录放入数据库中,根据上面链接的Stack Overflow帖子,这是通过“ db.foo.find()。sort({_ id:-1})。limit完成的(30)”,例如最后30个条目。

那么我应该在哪里放置回调函数以返回响应?我尝试过:

app.get("/pp", function (req, res) {
  PPOverTime.find({}, function (error, documents) {
      res.send(documents);
    });
});

但是这会导致错误,因为sort函数只能接受一个参数。我想更一般地说,如果我要在find()调用上运行多个函数,该如何异步执行此操作?谢谢。

2 个答案:

答案 0 :(得分:0)

你可以试试吗?

app.get("/pp", function (req, res) {
  PPOverTime.find()
    .limit(30)
    .sort({ _id: -1 })
    .then(results => {
      console.log(results)
    })
    .catch(error => console.error(error))
}

答案 1 :(得分:0)

谢谢大家,这是我的做法。

npm install --save bootstrap jquery popper.js