本周我遇到了一个小问题,我试图将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;
请注意,我只能传递字符串结果并将其显示在玉器渲染中,我想要做的是传递配置文件对象以在渲染中使用它来显示名称,年龄,生日但是我可以'让它工作,它将传递未定义的对象或不传递。
感谢您花时间阅读本文。
答案 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.foo
,name.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);
});