gpt4 book ai didi

Javascript:REST API Mongodb 未在 Postman 上连接

转载 作者:行者123 更新时间:2023-12-03 03:13:10 26 4
gpt4 key购买 nike

我是 JavaScript 新手,我正在尝试学习如何从计算机上的本地服务器构建 REST API。然而,当我在 Postman 上测试 GET 请求时,它总是返回错误:无法获取任何响应。

REST API 的目的是 (a) 存储有关太阳系中行星的基本信息,(b) 允许 GET 请求,以及 (c) 允许我使用 POST 在数据库中添加更多条目。

当我转到 postman 时,我使用以下 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 作为扩展名,因为这是在//*****RAW DATA 部分中保存我的数据的 URL 的名称。我通过遵循教程得到了这个,但我不确定为什么我应该这样做。如果有人可以解释一下我将非常感激。谢谢。

此外,我还建议使用 Planet.collection.drop() 来确保在重新加载或更改数据库时数据库正确刷新。由于我什至无法使 GET 请求正常工作,因此我不确定是否需要此行。

此外,我还没有放入 POST 请求代码,因为在 GET 请求功能正常工作之前我看不到这一点。

最佳答案

尝试注释掉app.use(bodyParser.json)

关于Javascript:REST API Mongodb 未在 Postman 上连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46880958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com