gpt4 book ai didi

javascript - meteor :服务器和客户端上的不同用户数

转载 作者:行者123 更新时间:2023-11-30 16:36:36 24 4
gpt4 key购买 nike

为什么我在客户端和服务器端为所有用户得到不同的结果?在客户端,它始终为 1。我是否已登录有关系吗?如果是这种情况,我如何在登录时获取所有数据?

Console Server: Users.find().count() = 7
Console Client: Users.find().count() = 1

shared/collections.js

Users = Meteor.users;

客户端/router.js

Router.route('/users', {
name: 'users',
data: function() {
return {
usersAll: Users.find({})
}
}
});

模板

<template name="users">
<ul class="list">
{{#each usersAll}}
<li><a href="/user/{{_id}}">{{profile.name}}</a></li>
{{/each}}
</ul>
</template>

在模板中我只得到一个结果。

最佳答案

是的,登录确实很重要。您必须在客户端上发布和订阅数据。如果您尝试在客户端执行 Meteor.users.find(),您将始终返回当前事件的用户。 (如果有的话)

如果您在服务器上执行 Meteor.users.find(),您将返回所有用户,无论发布/订阅如何。这是一种安全预防措施,可防止普通用户访问客户端上的私有(private)信息。

如果您愿意,您可以向客户端发布更多或更少的数据。查看这篇文章: https://www.meteor.com/tutorials/blaze/publish-and-subscribe

或者文档: http://docs.meteor.com/#/full/meteor_publish

如果您想发布所有数据,您始终可以添加autopublish 包。不过,不建议将此用于生产应用。

服务器

Meteor.publish('allUsers', function(){
return Meteor.users.find();
});

客户端

Template.users.onCreated(function(){
var instance = this;

instance.autorun(function(){
var allUsers = instance.subscribe('allUsers');
});
});

Template.users.helpers({
'usersAll': function(){
return Meteor.users.find().fetch();
}
});

关于javascript - meteor :服务器和客户端上的不同用户数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32618726/

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