插入NULL - 节点Js // MongoDB

问题描述:

  • 我不知道为什么这段代码插入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

你有没有试图把

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,内部服务器错误。 –