首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的mongodb返回数组为空[]

我的mongodb返回数组为空[]
EN

Stack Overflow用户
提问于 2017-08-08 22:25:42
回答 2查看 274关注 0票数 0

我正在研究使用Node.js、AngularJS、Express和MongoDB构建一个具有MEAN堆栈的全栈JavaScript应用程序。

我在第三部分,我必须检索我的数据库中的所有酒店。

当我在浏览器中输入/时,我的数据库返回一个空数组,但hotel.data.json文件已满。

我也尝试了一个复制的第5节老师的期末作业,但我有相同的结果,我的数据库是空的[]。这是hotels.controllers文件的代码:

代码语言:javascript
复制
var mongoose = require('mongoose');
var Hotel = mongoose.model('Hotel');


module.exports.hotelsGetAll = function(req, res) {


  console.log('GET the hotels');
  console.log(req.query);

  var offset = 0;
  var count = 5;

  if (req.query && req.query.offset) {
    offset = parseInt(req.query.offset, 10);
  }

  if (req.query && req.query.count) {
    count = parseInt(req.query.count, 10);
  }

  Hotel
    .find()
    .skip(offset)
    .limit(count)
    .exec(function(err, hotels) {
      console.log("Found hotels", hotels.length);
      res
        .json(hotels);
    });

};

module.exports.hotelsGetOne = function(req, res) {
  var id = req.params.hotelId;
  console.log('GET hotelId', id);

  Hotel
    .findById(id)
    .exec(function(err, doc) {
      res
        .status(200)
        .json(doc);
    });

};

module.exports.hotelsAddOne = function(req, res) {
  console.log("POST new hotel");
  var db = dbconn.get();
  var collection = db.collection('hotels');
  var newHotel;

  if (req.body && req.body.name && req.body.stars) {
    newHotel = req.body;
    newHotel.stars = parseInt(req.body.stars, 10);
    collection.insertOne(newHotel, function(err, response) {
      console.log("Hotel added", response);
      console.log("Hotel added", response.ops);
      res
        .status(201)
        .json(response.ops);
    });
    // console.log(newHotel);
    // res
    //   .status(200)
    //   .json(newHotel);
  } else {
    console.log("Data missing from body");
    res
      .status(400)
      .json({
        message: "Required data missing from body"
      });
  }

};

EN

回答 2

Stack Overflow用户

发布于 2017-08-08 23:13:21

谢谢你的回复。

这是路由文件:

代码语言:javascript
复制
var express = require('express');
var router = express.Router();

var ctrlHotels = require('../controllers/hotels.controllers.js');

// Hotel routes
router
  .route('/hotels')
  .get(ctrlHotels.hotelsGetAll);

router
  .route('/hotels/:hotelId')
  .get(ctrlHotels.hotelsGetOne);

router
  .route('/hotels/new')
  .post(ctrlHotels.hotelsAddOne);

module.exports = router;

我的console.log()告诉我们:

代码语言:javascript
复制
GET /api/hotels
Requested by: undefined
GET the hotels
{}
(node:2780) DeprecationWarning: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library ins
null
[]
Found hotels 0

我有一个hothel-data.json文件,里面有所有的酒店,在视频中教授在命令提示符下连接到db类型mongod时,但他给了我一个错误,所以当我插入db类型时,输入: mongod -dbpath=data。

我有一个主文件夹,里面有一个API文件夹,里面有3个文件夹。

1个控制器文件夹,包含hotels-Controlers.js;2个数据文件夹,包含db.js、dbconnection.js、hotels-Dataa.json、hotels.model.js;以及3个路由文件夹,包含index.js。

票数 0
EN

Stack Overflow用户

发布于 2017-08-08 23:48:08

我解决了导入酒店-data.json文件的问题,现在可以了,输入ocalhost: 3000 / api / hotels就可以看到所有的酒店。

不管怎样,谢谢你。

奥罗拉

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45571013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档