gpt4 book ai didi

javascript - 在 Meteor 中通过 ReactiveVar 传递数组

转载 作者:行者123 更新时间:2023-11-30 10:05:30 26 4
gpt4 key购买 nike

我有一个 Meteor 方法可以返回我的应用程序中的所有用户帐户

returnUsers: function(){
return Meteor.users.find().fetch();
}

我正在使用 new ReactiveVar 将 Meteor 方法的返回值传递到我的模板助手中:

Template.listViewTemplate.created = function (){
var self = this;
self.myAsyncValue = new ReactiveVar("Waiting for response from serv er...");
Meteor.call('returnUsers', function (err, users) {
if (err)
console.log(err);
else
self.myAsyncValue.set(users);
});
}

Template.listViewTemplate.helpers({
userCollection: function(){
return Template.instance().myAsyncValue.get();
}
});

但是当我将用户呈现到 View 中时,我收到一个控制台错误

{{#each}} currently only accepts arrays

当我在没有 #each 迭代器的情况下渲染时,使用

<ul id='usersList'>
{{userCollection}}
</ul>

我网页上的输出准确地反射(reflect)了用户数量 (2),但读取

[object Object],[object Object]

我很确定这里发生了一些有趣的事情,因为我使用的是全局 Meteor 集合(Meteor.users.find().fetch(),而不是定义我自己的收藏),但我不确定如何绕过它。

我想显示所有用户的列表,以便当前用户可以单击另一个用户并与他们共享文档——不知道如何解决这个问题。

最佳答案

您不需要为此使用 react 变量。 Template.listViewTemplate.created 中的函数不是自动运行中的容器,这意味着:它不会被重新计算。

针对您的场景的最佳方法是:使用一个变量获取状态(加载、加载、错误)并使用另一个变量保存数组本身附加到自身。 react 性很酷,但您应该只在需要时使用它。

关于:

[object Object],[object Object]

发生这种情况是因为您没有从提供的对象中提取任何值,也没有使用 {{#each}} 循环。

您列出用户的解决方案既危险又低效。您正在向客户端发送用户集合中的所有字段,包括登录 token 。

最好的方法是创建一个只发送必要字段的订阅,例如:_id、info.firstName。您还应该有一些标准来列出用户并使用分页。还可以考虑用于此目的的搜索功能。

关于javascript - 在 Meteor 中通过 ReactiveVar 传递数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29381734/

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