NodeJS |将对象作为函数参数传递

时间:2013-09-17 20:38:37

标签: javascript node.js express

本周我遇到了一个小问题,我试图将JSON对象作为参数传递给函数,但它总是告诉我我不能这样做,但我不知道我想最终从我的json对象中分别发送50个值。

以下是我的应用程序的设置,这是按照预期的方式正常工作:

app.get('/', routes.index);

这是前一行代码的路由索引(请注意,我正在使用jade进行渲染,我正在使用下一个函数将参数传递给它,就像这一行中的名称一样:

exports.index = function(req, res){
  getprofile.profileFunc(function(result) {
    res.render('index', { name: result });  
  });
};

接下来,它从getprofile调用函数profileFunc:

var profileFunc = function(callback) {
var sapi = require('sapi')('rest');

  sapi.userprofile('name_here', function(error, profile) {
    var result = [profile.data.name];
    callback.apply(null, result);
  });

};
exports.profileFunc = profileFunc;

请注意,我只能传递字符串结果并将其显示在玉器渲染中,我想要做的是传递配置文件对象以在渲染中使用它来显示名称,年龄,生日但是我可以'让它工作,它将传递未定义的对象或不传递。

感谢您花时间阅读本文。

3 个答案:

答案 0 :(得分:0)

我会建议如下:

var profileFunc = function(callback) {
    var sapi = require('sapi')('rest');
    sapi.userprofile('name_here', function(error, profile) {
        callback.apply(null, profile);
    });
};
exports.profileFunc = profileFunc;

...

getprofile.profileFunc(function(result) {
    res.render('index', result);  
});

答案 1 :(得分:0)

如果你将Object放入Jade的模板上下文中,那么你必须使用包含Object的变量来引用它。在您的模板中,您可以使用name.fooname.bar

来访问该模板

答案 2 :(得分:0)

实际上问题是使用apply,apply将数组作为第二个参数,所以当你试图发送它不起作用的对象时。只需使用回调函数,不要像这样: -

var profileFunc = function(callback) {
    var sapi = require('sapi')('rest');
    sapi.userprofile('name_here', function(error, profile) {
        callback(profile);
    });
};
exports.profileFunc = profileFunc;

...

getprofile.profileFunc(function(result) {
    res.render('index', result);  
});