【发布时间】:2015-10-08 19:23:10
【问题描述】:
我有这段代码,我从客户端调用 Meteor 方法并期望回调中的结果。 results 对象是一个格式良好的对象,我可以从服务器控制台对其进行字符串化和打印。
当我运行此代码时,如果结果有效且没有错误,则不会在客户端上调用回调。但是,如果我将fut.return(results) 替换为fut.return(JSON.parse(JSON.stringify(results))),则会调用回调并在客户端中获得“字符串”。知道为什么我可以返回一个字符串但没有对象吗?
服务器代码(Meteor.Methods()):
getUserEvents : function(userId,start,end) {
var fut = new Future();
getUserEventsPrivate(userId,start,end,function(err,results){
if(err){
fut.throw(new Meteor.Error( 500, 'Oops, something wrong happened'));
}else{
fut.return(results); // works when fut.return(JSON.parse(JSON.stringify(results)));
}
});
return fut.wait();
}
客户:
Meteor.call('getUserEvents',Meteor.user()._id, startStr, endStr,function(err,results){
console.log(results);
});
编辑 这是我试图作为“结果”传递的 Json:
[
{
"title": "ResponsiveMTL #1",
"start": "2015-10-13T21:30:00.000Z",
"end": "2015-10-14T00:30:00.000Z"
},
{
"title": "Meteor Global Distributed Hackathon",
"start": "2015-10-10T15:00:00.000Z",
"end": "2015-10-11T15:00:00.000Z"
},
{
"title": "retenues a la source",
"start": "2015-10-08T19:25:00.275Z",
"end": "2015-10-08T19:25:00.275Z"
},
{
"title": "Salsa",
"start": "2015-09-19T22:00:00.000Z",
"end": "2015-09-19T23:00:00.000Z"
},
{
"title": "Salsa",
"start": "2015-10-09T22:00:00.000Z",
"end": "2015-10-09T23:00:00.000Z"
}
]
【问题讨论】:
-
尝试将
return fut.wait()更改为fut.wait(); return fut.value; -
当然
result而不是results只是一个错字,对吧? -
@apendua 当然 :)
-
能否也比较一下
parse/stringify技巧前后服务器上的results对象? -
您能否添加一个
results的示例或阐明它的外观?服务器控制台中是否有任何错误或指示?
标签: serialization meteor fiber