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

Javascript NodeJS |将对象作为函数参数传递,javascript,node.js,express,Javascript,Node.js,Express,本周我遇到了一个无法克服的小问题,我试图在函数中传递一个JSON对象作为参数,但它总是告诉我我不能这样做,但我不想最终将50个值与我的JSON对象分开发送 以下是我的应用程序上的设置,这与express的预期效果一致: app.get('/', routes.index); 下面是前一行代码中的路由索引(请注意,我使用jade进行渲染,并使用下一个函数将参数传递给它,如本函数中的名称: exports.index = function(req, res){ getprofile.profi

本周我遇到了一个无法克服的小问题,我试图在函数中传递一个JSON对象作为参数,但它总是告诉我我不能这样做,但我不想最终将50个值与我的JSON对象分开发送

以下是我的应用程序上的设置,这与express的预期效果一致:

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;
请注意,我只能传递一个字符串结果并将其显示在jade渲染中,我要做的是传递profile对象以在渲染中使用它来显示姓名、年龄、生日,但我无法让它工作,它将传递未定义的对象或不传递


感谢您花时间阅读此文章。

我将提出以下建议:

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

如果将
对象
放入Jade的模板上下文中,则必须使用包含该
对象
的变量来引用它。在模板中,可以使用
name.foo
name.bar
等来访问该对象。

实际上,问题在于应用,应用将数组作为第二个参数,因此在尝试时ng以发送对象,但该对象不起作用。只需使用回调函数而不应用,如下所示:-

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

谢谢,我不知道您可以这样做,但是当我在jade文件中使用#{result.data.name}时,它返回了一个错误:“无法读取未定义的属性'name'”。您是否仅尝试了data.name?是的,我尝试了data.name,但它向我发送了相同的错误。看起来我的json对象没有发送到它。我建议将console.log放在res.render之前,并查看结果。我在呈现之前使用了console.log,但它未定义,因此问题是“传递”获取它的函数中的对象。在使用callback.apply之前,我尝试记录“profile”是什么,这没有问题,所以我的问题一定是我执行回调或调用函数的方式?