如何传递函数值

时间:2017-02-27 12:53:44

标签: node.js express ejs

我创建了名为(user.js)的模型

    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);         
        });
      });
    }

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

我在模型method("show_details")中创建了user.js,我在路由中调用了该特定函数。每当页面(restful)被加载时,我希望显示数据resultArray。但我被困在这里。

您能否建议我如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

main.js对象上,您需要在渲染函数中传递变量res,以便在模板中使用它。

类似的东西:

resultArray

在express.js的文档中详细记录了这一点:link

另外,请勿将结果放在res.render('restful', {var_in_ejs_template: resultArray}); 属性中。看起来很脏。

答案 1 :(得分:0)

你的用户模块show_deatils有两个参数,你没有传递任何参数, 并且在回调中你没有使用,

  

user.js的

...
@Deployment
public static Archive<?> createDeploymentPackage() throws IOException {
    final String testWarName = "test.war";

    final EnterpriseArchive ear = ShrinkWrap.createFromZipFile(
            EnterpriseArchive.class, new File("target/myApp.ear"));

    addTestWar(ear, myClassTest.class, testWarName);
...
  

路线

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);         
        });
        callback(resultArray);
      });
    }