2016-08-20 71 views
1
  • 我不知道爲什麼這段代碼插入NULL。插入NULL - 節點Js // MongoDB

  • 當柱請求被髮送我接收(從index.js res.json(req.body))的空 「{}」

  • 使用I'm的NodeJS,快速4和MongoDB。

  • 該帖子中的名稱屬性與玉 模板中的名稱屬性相同。我有兩種形式在相同的.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

在Stack Overflow上發佈時的快速提示:將問題的範圍縮小到儘可能小。 將您所有的代碼發佈到這裏並要求我們修復它通常會給您留下極少的迴應和一堆downvotes。 – DrSatan1

+1

@ DrSatan1我發佈了代碼,因爲我希望你知道我使用路由器,所以我的代碼是模塊化的,我想你想知道什麼是寫的,什麼不是 –

+0

你的編輯是好的。 Upvoted。抱歉,我不知道如何幫助解決您的問題。 – DrSatan1

回答

0

你有沒有試圖把

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

在你index.js的頂部,並從路線移除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,並直接從'monk'函數中調用它。同樣返回新創建的對象也是很好的約定,因爲你有一個實際的對象返回數據庫。因此,使用'res.json(doc)' – alexi2

+0

通過這些更改,我在POST中出現錯誤500,內部服務器錯誤。 –