Javascript 发布用户数据,用于配置文件页面

Javascript 发布用户数据,用于配置文件页面,javascript,meteor,Javascript,Meteor,因此,我正在创建一个用户配置文件页面,并获得了当前用户的所有数据。我遇到的问题是当前用户看不到其他用户的数据 我已经看过了所有我能在网上找到的东西,但没有找到一个对我有帮助的答案,只是做一件事的许多不同方式 我的出版物 Meteor.publish('allUsers', function(user){ return Meteor.users.find({_id: this.userId},{ fields: { profile: 1,

因此,我正在创建一个用户配置文件页面,并获得了当前用户的所有数据。我遇到的问题是当前用户看不到其他用户的数据

我已经看过了所有我能在网上找到的东西,但没有找到一个对我有帮助的答案,只是做一件事的许多不同方式

我的出版物

Meteor.publish('allUsers', function(user){
  return Meteor.users.find({_id: this.userId},{
     fields: {
           profile: 1,       
           emails:1,                                                                                                              
           username: 1
       }
   }); 
}); 
我的路由器

Router.route('/profile/:_id', {
 name: 'profile',
  waitOn: function(){
  return Meteor.subscribe('allUsers')},
  data: function(){
      var user = this.params._id;
      return Meteor.users.findOne({_id: user});
  },
});
配置文件模板

<template name='profile'>
      Username: {{username}}<br>
      Email: {{email}}
      {{log}}
      {{#with profile}}
          Full Name: {{name}}
          {{log}}
          {{/with}}

 </template>
这就是我链接到其他用户的方式

所有者是用户_id:


当前用户的日志输出显示数据,而另一用户的日志输出为空对象。尽管它在您的
allUsers
出版物中抓取了正确的_-id.

,但您可以找到具有
{u-id:this.userId}
的用户
this.userId
是订阅用户的ID。这意味着您发布的是用户自己的数据,而不是任何其他用户的数据。如果要发布所有用户,则需要使用
.find({},{fields:…})

对于具有多个用户的应用程序,发布所有用户不是一个好主意,因此您可以只发布一个用户:

Meteor.publish("userById", function (requestedUserId) {
  return Meteor.users.find({_id: requestedUserId}, {fields: ...});
});
然后在路由器中订阅时,传入用户id:

Meteor.subscribe("userById", this.params._id);

我建议重新阅读你的问题标题——你是想发布用户数据还是日期?我会编辑它,但是我知道你的意图。呜呜,我的错错过了,现在可以解决了谢谢你,这很有效,会使用更安全的选项。
Meteor.subscribe("userById", this.params._id);