我正在研究使用Node.js、AngularJS、Express和MongoDB构建一个具有MEAN堆栈的全栈JavaScript应用程序。
我在第三部分,我必须检索我的数据库中的所有酒店。
当我在浏览器中输入/时,我的数据库返回一个空数组,但hotel.data.json文件已满。
我也尝试了一个复制的第5节老师的期末作业,但我有相同的结果,我的数据库是空的[]。这是hotels.controllers文件的代码:
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"
});
}
};
发布于 2017-08-08 23:13:21
谢谢你的回复。
这是路由文件:
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()告诉我们:
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。
发布于 2017-08-08 23:48:08
我解决了导入酒店-data.json文件的问题,现在可以了,输入ocalhost: 3000 / api / hotels就可以看到所有的酒店。
不管怎样,谢谢你。
奥罗拉
https://stackoverflow.com/questions/45571013
复制相似问题