2016-08-20 8 views
1
  • このコードがNULLを挿入する理由はわかりません。ポスト要求はIが空(index.jsでres.json(req.body)から)受信送られるNULLを挿入する - ノードJs // MongoDB

  • "{}"

  • - 私使用NodeJs、エクスプレス4とのMongoDB。

  • 投稿の名前属性は、翡翠 テンプレートと同じです。私は2つの形式が同じ.jadeにありますが、異なる名前が付いています。

  • これは、すべてのコードではありません、私は最も重要なを入れて、どのような質問

App.js

var express = require('express'); 
var bodyParser = require('body-parser'); 

var mongo = require('mongodb'); 
var monk = require('monk'); 
var db = monk('localhost:27017/registredUsers'); 

var routes = require('./routes/index'); 
var users = require('./routes/users'); 

var app = express(); 

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

app.use('/', routes); 
app.use('/users', users); 

module.exports = app; 

index.jsに関連しています

var express = require('express'); 
var bodyParser = require('body-parser'); 

router.post('/adduser', function(req, res) { 

    var db = req.db; 

    var userName = req.body.username; 
    var userEmail = req.body.useremail; 
    var userPassword = req.body.userpassword; 

    var collection = db.get('usercollection'); 

    collection.insert({ 
     username : userName, 
     email : userEmail, 
     password : userPassword 
    }, function (err, doc) { 
     if (err) { 
      res.send("There was a problem adding the information to the database."); 
     } 
     else { 
      res.json(req.body); 
     } 
    }); 
}); 

module.exports = router; 
+3

スタックオーバーフローでポストするときのヒント:できるだけ小さく質問をカットしてください。 ここにあなたのコードを投稿し、それを修正するように私たちに依頼するのは、通常、ごく少数の応答と複数のdownvotesを残します。 – DrSatan1

+1

@ DrSatan1私はあなたが私のコードがモジュラーであるようにルータを使用したことを知りたがっているので、そのコードを掲載しました。あなたは何が書かれていて何が分からないのかを知りたいと思う。 –

+0

あなたの編集は良いです。 Upvoted。申し訳ありませんがあなたの問題を助ける方法がわかりません。 – DrSatan1

答えて

0

はあなたのindex.jsの上部に

var mongo = require('mongodb'); 
var monk = require('monk'); 
var db = monk('localhost:27017/registredUsers'); 

を入れて、ルートからvar db = req.dbを削除しようとしています。

さらに、新しく作成したドキュメントをコールバックから返信することができます。

index.jsファイルは次のようになります。

index.js

var express = require('express'); 
var bodyParser = require('body-parser'); 
var mongo = require('mongodb'); 
var monk = require('monk'); 
var db = monk('localhost:27017/registredUsers'); 

router.post('/adduser', function(req, res) { 

    var userName = req.body.username; 
    var userEmail = req.body.useremail; 
    var userPassword = req.body.userpassword; 

    var collection = db.get('usercollection'); 

    collection.insert({ 
     username : userName, 
     email : userEmail, 
     password : userPassword 
    }, function (err, doc) { 
     if (err) { 
      res.send("There was a problem adding the information to the database."); 
     } 
     else { 
      res.json(req.body); // <- here you could return the new object instead. 
      // res.json(doc); 
     } 
    }); 
}); 

module.exports = router; 

編集

私は、次の提案を作っOP支援するために:

打ちvar userName = 'test'をし、テストするためにres.json(doc)で作成した文書を返しますデータベースが更新中であることを示します。

+0

'router.post'はindex.jsに入るべきではありませんか? –

+0

うまくいけばそれは理にかなっています。基本的には、dbを使う必要があるところでdbを呼び出し、 'monk'関数から直接呼び出すべきだと思います。また、新しく作成されたオブジェクトを返すことは、db内の実際のオブジェクトが返されるときに便利です。したがって、 'res.json(doc)'を使用します。 – alexi2

+0

その変更により、POSTで内部エラーが発生しました。 –

関連する問題