Meteor 在模式集合 2 中获取用户数据,并自动形成

Meteor get Users datas in a schema collection2, and autoform

我想使用 collection2 和 autoform 将一些用户数据插入到新集合中。我的用户集合中有很多数据。

我不知道怎么做才是最好的?

也许我需要发布和订阅用户集合,然后在我的架构中获取这些数据。

这是我的架构

Posts = new Mongo.Collection('posts');

PostsIndex = new EasySearch.Index({
 collection: Posts,
 fields: ['title','tags.tags'],
 engine: new EasySearch.Minimongo()
 // name: 'PostsIndex',
 // permission: function(options) {
 //     return userHasAccess(options.userId); // always return true or false here
 // }
});

Posts.allow({
 insert: function(userId, doc) {
  return !!userId;
 }
});

Schema = {};

Schema.Tags = new SimpleSchema({
 tags: {
  type: String
 }
});

Schema.PostsSchema = new SimpleSchema({
 title: {
  type: String,
  label: '',
  max: 250,
  min: 3
 },
 tags: {
  type: [Schema.Tags]
 },
 authorId: {
  type: String,
  label: 'Author',
  autoValue: function(){
   return this.userId
  },
  autoform: {
   type: 'hidden'
  }
 },
 authorName: {
  type: String,
  label: 'AuthorName',
  autoValue: function(){
   return this.userId.username
  },
  autoform: {
   type: 'hidden'
  }
 },
 createdAt: {
  type: Date,
  label: 'CreatedAt',
  autoValue: function(){
   return new Date()
  },
  autoform: {
   type: 'hidden'
  }
 }
});

Posts.attachSchema(Schema.PostsSchema);

提前谢谢你:)

this.userId 只是 return 当前用户的 id 而不是对象。 this.userId.username 无法工作。使用 this.userId 在 Meteor.users 集合中查找用户并 return 用户名 属性。

var tempUser = Meteor.users.findOne({_id: this.userId});
return tempUser.username;

来自流星documentation:

By default, the current user's username, emails and profile are published to the client.

默认情况下,流星会发布用户集合中文档的用户名、ID 和电子邮件字段,以便帐户系统正常工作。如果你想要当前登录用户的用户名,你可以使用:

Meteor.user().username;

我只是在客户端助手中测试了这个,而不是在 autoValue 中,但我认为这也应该在服务器上工作。