使用Express.js和Mongoose的基本GET请求

时间:2018-10-05 01:18:27

标签: node.js express mongoose get mocha

我正在分配一个任务,以列出mongoDB数据库中的所有数据,并且无法找到我要去哪里。这似乎是一个相当简单的问题,但是每当我运行提供的mocha测试时,它都会不断抛出404错误。这是测试的相关部分:

  it('should it able to retrieve all listings', function(done) {
    agent.get('/api/listings')
      .expect(200)
      .end(function(err, res) {
        should.not.exist(err);
        should.exist(res);
        res.body.should.have.length(147);
        done();
      });
  });

这是我的GET请求代码。我尝试了几种不同的编码方式,但这似乎是将所需数据作为JSON返回的最简单/最直接的方法。

exports.list = function(req, res) {
  Listing.find(function(err, listing){
    if(err){
      res.status(404).send(err);
    } else {
    res.json(listing);
  }})
};

还有什么我应该做的吗?我一直在研究请求的教程和基本示例,看来它应该可以工作,但事实并非如此。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

  • 确保将中间件功能(用于GET请求的代码)映射到/api/listings
  • 我不确定exports.list。可能应该是module.exports
  • 我基于您的代码假设您使用猫鼬ODM。在这种情况下,我认为您需要将查询传递给find方法check this out
  • 您可能想确保在测试初始化​​时已连接到数据库并且该连接在测试开始之前已完成
  • 它总是有助于记录错误

结帐express-generator来搭建样板特快应用。可能会帮助您将其与您的应用进行比较,以检查其接线是否正确

答案 1 :(得分:0)

似乎您没有将第一个参数传递给find method。仅回调...尝试此操作:

Listing.find({}, function(err, listing) {
  if (err) {
    res.status(404).send(err);
  } else {
    res.json(listing);
  }
})

我假设您想要所有记录,这就是为什么我们传递空对象 {} 的原因。