从node.js中的函数传递值

时间:2017-02-28 06:31:40

标签: javascript node.js express ejs

//这是我的模特

    module.exports.show_deatils=function(req,res,callback){

      var resultArray=[];
      mongo.connect(url,function(err,db){
        assert.equal(null,err);
        var cursor=db.collection('users').find();
        cursor.forEach(function(doc,err){
          assert.equal(null,err);
          resultArray.push(doc);
          console.log("came inside the function")
           return resultArray;


        });

    });

    }

//这是我的路线

 router.get('/restful', function(req, res){
console.log("before");
  User.show_deatils(function(req,res){
console.log(resultArray);
    req.session.resultArray=resultArray;


  });

    res.render('restful',{items:req.session.resultArray});
 });

//我在这里调用从路由到模型的函数(show_details)。我面临的问题是我正在调用函数。正在调用方法。数组" resultArray"已填充了值。但我无法返回特定值。我们怎么做?

2 个答案:

答案 0 :(得分:1)

试试这个:

//模型

我添加了对回调的调用:

module.exports.show_deatils=function(req,res,callback){

  var resultArray=[];
  mongo.connect(url,function(err,db){
      assert.equal(null,err);
      var cursor=db.collection('users').find();
      cursor.forEach(function(doc,err){
          assert.equal(null,err);
          resultArray.push(doc);
          console.log("came inside the function")
          return resultArray;
    });

    //now call the callback <----
    callback(resultArray);

});

}

//路线

User.show_details必须使用3个参数,最后一个是要执行的回调:

 router.get('/restful', function(req, res){
    console.log("before");
    User.show_deatils(req, res, function(resultArray){
            console.log(resultArray);
            req.session.resultArray=resultArray;
            res.render('restful',{items:req.session.resultArray});
        });
 });

答案 1 :(得分:0)

使用回调函数返回数据。

module.exports.show_deatils=function(req,res,callback){
      var resultArray=[];
      mongo.connect(url,function(err,db){
        assert.equal(null,err);
        var cursor=db.collection('users').find();
        cursor.forEach(function(doc,err){
          assert.equal(null,err);
          resultArray.push(doc);
          console.log("came inside the function")

        });  
        callback(null, resultArray);  
    });    
    }

=======================

router.get('/restful', function(req, res){
console.log("before");
  User.show_deatils(req, res, function(err, resultArray){
   if(!err) {
    console.log(resultArray);
    req.session.resultArray=resultArray;
   }
  });    
    res.render('restful',{items:req.session.resultArray});
 });

您还可以修改错误逻辑以使其健壮。