[英]Javascript: REST API Mongodb not connecting on Postman
我是JavaScript的新手,正在尝试学习如何从计算机上的本地服务器构建REST API。 但是,当我在Postman上测试GET请求时,它总是返回一个错误:无法获得任何响应。
REST API的目的是(a)存储有关太阳系中行星的基本信息,(b)允许GET请求,(c)允许我使用POST在数据库中添加更多条目。
当我去邮递员时,我使用以下URL: localhost:8000/planets
我正在使用mongodb和mongoose。 我认为问题出在我的代码中,因为我没有收到服务器的响应,但我无法查明问题出在哪里。 谢谢。
var express = require('express');
var bodyParser = require('body-parser');
var _ = require('lodash');
var mongoose = require('mongoose');
var app = express();
app.use(express.static('planet_pages'));
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json);
mongoose.Promise = global.Promise;
var promise = mongoose.connect('mongodb://localhost/planet_server', {
useMongoClient: true,
});
promise.then(function(db){
console.log('DATABASE CONNECTED!!');
}).catch(function(err){
console.log('CONNECTION ERROR', err);
});
var Schema = mongoose.Schema;
var planetSchema = new Schema({
name: String,
position: String,
moons: String,
diameterInKm: String,
daysInYear: String,
temperature: String
})
var Planet = mongoose.model('Planet', planetSchema);
Planet.collection.drop();
//*****RAW DATA*****
var planets = [{
name: "Mercury",
position: "Mercury is the first planet from the Sun",
moons: "Mercury has no moons",
diameterInKm: "Mercury's diameter is 4,879km",
daysInYear: "A year on Mercury lasts just 88 days!",
temperature: "The temperature on Mercury is a scorching 427C"},
{ name: "Venus",
position: "Venus is the second planet from the Sun",
moons: "Venus has no moons",
diameterInKm: "Venus's diameter is 12,104km",
daysInYear: "A year on Mercury lasts 225 days!",
temperature: "The temperature on Mercury is 467C. Hot enough to melt lead!"
}];
//*****END OF RAW DATA*****
app.get('/planets', function(req, res){
Planet.find({}).exec(function(err, planets){
if(err) {
return res.status(500).send(err);
}
return res.json(planets);
});
});
app.listen(8000, function(){
console.log('I am listening');
});
编辑:在app.use(express.static('planet_pages')
,planet_pages是我的项目文件夹中的一个文件夹,其中包含几个HTML页面,我希望这些页面可以用来进行AJAX查询。
另外,在app.get('/planets', function(req, res)
行中,还有一个补充问题,我使用/planets
作为扩展名,因为这是将数据保存在// ***中的URL的名称**“原始数据”部分。我是从教程中获得的,但是我不确定为什么要这样做。如果有人能解释一下,我将非常感谢。
还建议我使用Planet.collection.drop()
来确保在我重新加载或更改数据库时数据库正确刷新。 由于我什至无法使GET请求正常工作,因此不确定是否需要此行。
另外,我还没有放入POST请求代码,因为直到让GET请求功能正常工作,我才意识到这一点。
尝试注释掉app.use(bodyParser.json)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.