2016-07-08 42 views
0

我想知道为什么在标签中未定义req.session.username >>> DOESNT WORK < < <虽然它在标签中工作>>>这是可行的< < <。我带了req作为我的模块的参数,但似乎我应该做别的事情?该/ AJAX路线通过Ajax调用访问,它并设置会话变量>>>这并不工作< < <in node.js with express req.session在我的require()模块中是undefined


//index.js file 

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

var app = express(); 

var functions = require('../public/javascripts/functions.js'); 

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

    var username = req.param("username"); 
    var password = req.param("password"); 
    var operation = req.param("operation"); 

    else if (operation === "validate") 
    { 




     async.series([ 

      function() 
      { 

       functions.validate(username, password, req); 

      } 

     ], function(err,result) 
     { 

      if (err) 
       return console.log(err); 

      console.log(result); 

     }); 
     //req.session.username = "yaryar"; >>>THIS DOES WORK<<< 

    } 

    var strings = ["rad", "bla", "ska"] 

    console.log('body: ' + JSON.stringify(req.body)); 
    console.log("AJAX RECEIVED"); 
    res.send(strings); 
}); 

module.exports = router; 

functions.js文件:

module.exports = { 

    validate: function(username, password, req) { 

     var url = 'mongodb://localhost'; 
     var MongoClient = require('mongodb').MongoClient; 
     var assert = require('assert'); 
     var ObjectId = require('mongodb').ObjectID; 

     MongoClient.connect(url, function(err, db) 
     { 
      assert.equal(null, err); 
      console.log("Connected correctly to server."); 

      var cursor = db.collection('users').find({username : username}); 

      cursor.each(function(err,doc,req) 
      { 

       assert.equal(err, null); 

       if (doc != null) 
       { 
         console.log("user found: " + doc.username); 

           req.session.username = "ttyy"; // >>>DOESNT WORK<<< 
           return true 

       } 
       else 
       { 
         console.log("user not found"); 
         return false; 
       } 
      }); 
       //db.close(); 
     }); 
    }  
}; 

回答

0

你正在覆盖请求cursor.each(function(err,doc,req)更改为cursor.each(function(err,doc,arr),它会工作