gpt4 book ai didi

javascript - Meteorjs - Meteor.call ('myMethod' )返回三个对象而不是一个数组?

转载 作者:行者123 更新时间:2023-11-28 18:18:12 25 4
gpt4 key购买 nike

我有一个客户有这个助手:

Template.eventTemplate.helpers({
returnUsersEvents: function(){
Meteor.call("events.getByUserId", function(error, result){
if(error){
console.log("error" + error.reason);
return;
}
console.log(result);
return result;
});

}
});

采集方法

Meteor.methods({
'events.insert'(Event) {
Events.insert(Event);
},
'events.getByUserId'(){
var events = Events.find({UserId: Meteor.userId()}).fetch();
console.log(events);
return events;
}
})

我的收藏中有一件元素。但我检索了三个相同类型的对象。谁能告诉我我做错了什么?

这是我的模板

<ul class="demo-list-item mdl-list">
{{#each returnUsersEvents}}
<li class="mdl-list__item">
<span class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect">
<i class="material-icons mdl-list__item-icon">map</i>
<a class="" href="/event/{{_id}}">{{EventName}}</a>
</span>
</li>
{{/each}}
</ul>

最佳答案

您的问题是您的 returnUsersEvents() 帮助程序根本不返回任何内容。 Meteor.call() 的回调内部有一个 return 语句。这将不会成为.call()本身的返回值。

Meteor.call() 是异步的,这意味着 .call() 将在回调内的结果可用之前返回。要实现此功能,您需要帮助程序在回调到达时返回结果,即在帮助程序第一次返回后的某个时间点。

Meteor 中实现此目的的典型模式是使用 ReactiveVar帮助器正在跟踪,并从回调内部设置该 ReactiveVar。

Here是一个 SO 答案,它展示了如何做到这一点。

在服务器上:您需要获取。否则,您将返回一个数据库游标,它不是可序列化的对象(这意味着它无法通过 DDP(Meteor 服务器通过该协议(protocol)将结果发送到客户端)返回)

关于javascript - Meteorjs - Meteor.call ('myMethod' )返回三个对象而不是一个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40449570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com