2017-10-23 9 views
0

JavaScriptを初めて使いました。自分のコンピュータのローカルサーバーからREST APIを構築する方法を学びたいと思っています。しかし、私がPostmanでGETリクエストをテストすると、常にエラーが返されます:どのレスポンスも取得できませんでした。Javascript:REST API MongodbがPostmanに接続していません

ソーラーシステムの惑星に関する基本情報を保存し、(b)GETリクエストを許可し、(c)POSTを使用してデータベースにエントリを追加できるようにすることです。

私は、次のURLを使用するにpostmanに行く:localhost:8000/planets

私はMongoDBのとマングースを使用しています。私はサーバーからの応答を得ていないので、問題はどこにあるのかと思うが、どこに問題があるのか​​を特定することはできない。ありがとう。

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'); 
}); 

EDIT:ラインapp.use(express.static('planet_pages')で、planet_pages私はAJAXのクエリを作成するために使用したいと考えてHTMLページのカップルが含まれている私のプロジェクトフォルダ内のフォルダがあります。

app.get('/planets', function(req, res)補足的な質問/planetsを拡張子として使用しています。これは、// ***** RAW DATAセクションに自分のデータを保持するURLの名前であるためです。私はチュートリアルに従うことからこれを得たが、なぜ私はそれをやるべきか分からない。誰かがこれを説明できるなら、私はそれを本当に感謝します。ありがとう。

また、Planet.collection.drop()を使用して、データベースを再ロードしたり変更したりするときにデータベースが正しく更新されるようにすることをお勧めしました。私はGET要求を動作させることさえできないので、私はこの行が必要かどうか分からない。

また、POST要求コードをまだ入れていないのは、私がGET要求機能を働かせるまでポイントが見えないからです。

+0

編集をコメントアウトしてみてください。それは、チュートリアルで推奨されていたので、私はポート8000​​を使用しています。ポートについてはあまりよく分かりません。それが問題なのでしょうか? – Nellington

答えて

1

app.use(bodyParser.json)

+0

ああ!ブリリアント。それが修正されました。どうもありがとう。 – Nellington

+0

問題ありません。また、POSTの本体を取得して解析するために、GETリクエストに 'body-parser'も必要ありません。 – jERCle

関連する問題