繁体   English   中英

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

[英]Basic GET Request using Express.js & Mongoose

我正在分配一个任务,以列出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);
  }})
};

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

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

Checkout Express-Generator可以搭建样板Express应用程序。 可能会帮助您将其与您的应用程序进行比较,以检查其接线是否正确

似乎您没有将第一个参数传递给find方法 仅回调...请尝试以下操作:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM