【问题标题】:Express Mongo call not workingExpress Mongo 呼叫不起作用
【发布时间】:2015-08-24 04:15:10
【问题描述】:

我正在尝试通过以下方式使用 node+express 获取存储在 Mongo 集合中的对象:

router.get('/api/articles/:page',function(req,res){
var x = {}
  Article.find({},function(err,arts){
    res.json(arts);
  }).limit(10).skip(page*10).sort({timestamp:-1});
});

但是它会抛出一个错误:Cant set headers after they are set。自从我在数据库检索中包含skip(page*10) 函数后,这个错误就开始出现了。

【问题讨论】:

  • 这是您的完整服务代码还是您删除了什么?
  • @Mahesh 这是检索按时间戳排序的 10 篇文章并根据用户请求的页面跳过 10 篇文章的代码。例如,如果我想要最新的 10 篇文章,我会打电话给 '/api/articles/0'

标签: node.js mongodb rest express


【解决方案1】:
router.get('/api/articles/:page',function(req,res){
  var page = (typeof(req.params.page) === undefined) ? 0 : parseInt(req.params.page);
  Article.find({})
         .limit(10).
         .skip(page*10)
         .sort({timestamp:-1})
         .exec(function(err,arts){
            if(err)
               res.json(err);
            else
               res.json(arts);
         });
});

【讨论】:

  • 它给出了一个错误说ReferenceError: page is not defined
  • @AyushGupta req.params 中的任何内容都将返回一个字符串。您需要转换数字:.skip((typeof(req.params.page) === undefined) ? 0 : parseInt(req.params.page))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多