2016-12-12 12 views
1

をモンゴ:ポスト要求 - JS表現し、私はこのコードを使用しています

app.post("/users", function(req, res) { 
db.collection(USERS_COLLECTION).insertOne(req.body , function(err, doc) { 
if (err) { 
    handleError(res, err.message, "Failed to create new user."); 
} else { 
    res.status(201).json(req.body); 
} 
    }); 
}); 

を、私はこの要求を入れしようとしています:localhostを:8080 /ユーザーのfirstName = fooの& lastNameの=バー

私はpostmanでpostリクエストを試してみるとidだけを返し、データベースにparamsを挿入しません。

{ 
    "_id": "584f04eb141faa7df7fc4059" 
} 

これを修正してデータを返す方法、または最初にスキーマを作成してチェックする必要がありますか?私が正しい方向に向けることができれば、それは偉大なものになるでしょう。

答えて

1

あなたはスキーマが必要である点は間違いありません!

データベースにスキーマが存在しない場合は、本質的に、(潜在的に)不一致のJSONオブジェクトでいっぱいのバケットがあります。したがって、キーが期待値に一致することを確認するのは面倒です。

Mongoを初めてご利用の方は、Mongoose ODMをチェックしてみることをおすすめします。 NoSQL DBの構造と癖を理解するのに役立ちます。

+0

OKクール:

が、これは現在、JSONで返すものです。それでは、スキーマを作成したら、私の現在のロジックでそれを実装する方法..どのように私は、スキーマと整列するURLのparamsを調べるのですか? – codeNinjaBro

+0

あなたのコードを100%確実にするのに十分ではありませんが、スキーマと実行しているあなたの例では、それは行くべき良いはずです。 Mongoはあなたのアプリケーションの外で走ります(これは実行前に 'mongod'をあなたの端末に入力する理由です)ので、エントリを追加するときには何もする必要はありません。 –

+0

以下を確認してください – codeNinjaBro

0

OK ...だから私は、スキーマ

var mongoose = require('mongoose'); 

// user schema 
var usersSchema = mongoose.Schema({ 

    firstName: String, 
    lastName : String, 
    email : String 
}); 

mongoose.model('users', usersSchema); 

を作成し、ポスト要求コードは次のようになります。

:問題は、私はHTTP POSTリクエストを送信するときということですが、

var express = require("express"); 
var path = require("path"); 
var bodyParser = require("body-parser"); 
var mongodb = require("mongodb"); 
var ObjectID = mongodb.ObjectID; 
var USERS_COLLECTION = "users"; 
var mongoURL = "the url is here"; 
var user = require("./Models/User"); 
var mongoose = require('mongoose'); 
var app = express(); 
app.use(express.static(__dirname + "/public")); 
app.use(bodyParser.json()); 


app.use(bodyParser.urlencoded({ 
    extended: true 
})); 

mongoose.connect(mongoURL); 

// USERS API ROUTES BELOW 

// Generic error handler used by all endpoints. 
function handleError(res, reason, message, code) { 
    console.log("ERROR: " + reason); 
    res.status(code || 500).json({"error": message}); 
} 

/* "/USERS" 
    * POST: creates a new user 
*/ 

app.post("/users", function(req, res) { 

    var firstName = req.params.firstName; 
    var lastName = req.params.lastName; 
    var email = req.params.email; 

//call the create function for our database 
mongoose.model('users').create({ 
    firstName : firstName, 
    lastName : lastName, 
    email : email 
}, function (err, user) { 
if (err) { 
    res.send("There was a problem adding the information to the database."); 
    } else { 
    //User has been created 
    console.log('POST creating new users: ' + user + firstName); 
    res.format({ 
     //JSON response will show the newly created user 
     json: function(){ 
     res.json(user); 
     } 
    }); 
    } 
    }) 
}); 

localhost:8080/users?firstName=foo&lastName=bar&[email protected] 

req.body.firstName =未定義とreq.params.firstName = undefinedどうすれば正しく読み込むことができますか?値?私はreq.bodyの場所に静的な文字列を置く...それは完璧に動作します。

{ 
    "__v": 0, 
    "_id": "5851567048018fa141543f53" 
} 
+0

クール、あなたは正しい道を歩いています。あなたが '='を忘れたように見えます。 '&lastNamebar&email = foo' - >'&lastName = bar&email = foo'です。そうでなければ 'npm install -s body-parser'を実行し、ミドルウェアを置いているところなら' server.use(bodyParser.json()) 'を置きます。 –

+0

どうすればパラメータにアクセスできますか? – codeNinjaBro

+0

URL: 'localhost:8080/users?firstName = foo&lastName = bar&email = foobar @ gmail.com'は' req.params.firstName'、 'req。 params.lastName'と 'req.params.email' –

関連する問題