2015-09-08 149 views
0

我正在使用mongoosejs在我的數據庫中插入數據。我試圖單獨添加save()回調示例: new ModelName.save(saveData),而不是以常規方式添加它。 新ModelName.save(函數(ERR,型號){...}Mongoose回調問題

  var express = require('express'); 
      var router = express.Router(); 

     var mongoose = require('mongoose'); 
     var userDetail = mongoose.model('user_details'); 

     //not working 
     router.post('/', resgisterUser); 

     function resgisterUser(req, res) { 
      new userDetail({ 
        fullName: req.body.fullName, 
        email: req.body.email, 
        contactNumber: req.body.contactNumber, 
        password: req.body.password 
       }) 
       .save(saveUserDetails); 
     } 

     function saveUserDetails(err, newUser) { 
      console.log(newUser) 
      res.writeHead(200); 
      res.end(); 
     } 

     //working code 

    function resgisterUser(req, res) { 
     new userDetail({ 
       fullName: req.body.fullName, 
       email: req.body.email, 
       contactNumber: req.body.contactNumber, 
       password: req.body.password 
      }) 
      .save(function (err, newUser) { 
       console.log(newUser) 
       res.writeHead(200); 
       res.end(); 
      }); 
    } 

` 

回答

1

這裏的問題是,saveUserDetails功能的resgisterUser(req, res)範圍之內定義的,所以不必reqres訪問物件。

應該做的是這樣的:

var express = require('express'); 
var router = express.Router(); 

var mongoose = require('mongoose'); 
var userDetail = mongoose.model('user_details'); 

router.post('/', resgisterUser); 

function resgisterUser(req, res) { 
    function saveUserDetails(err, newUser) { 
     console.log(newUser) 
     res.writeHead(200); 
     res.end(); 
    } 

    new userDetail({ 
     fullName: req.body.fullName, 
     email: req.body.email, 
     contactNumber: req.body.contactNumber, 
     password: req.body.password 
    }) 
    .save(saveUserDetails); 
} 
+0

感謝它的工作。 –

0

嘗試均線之上你registerUser功能的saveUserDetails功能。在JavaScript(實際上任何語言),它被認爲是不好的做法,之前使用的功能它被定義。在該節點上我還會把你的registerUser功能路線聲明以上爲好。

+0

上下移動的功能其實並不重要,因爲通過@svlapin對象提到的超出範圍 –