Meteor获取架构集合2中的用户数据,并自动调整

时间:2015-11-17 19:03:34

标签: javascript meteor meteor-autoform meteor-collection2

我想在一个带有collection2和autoform的新集合中插入一些用户数据。我的Users系列中有很多数据。

我不知道如何以最好的方式做到这一点?

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

这是我的架构



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);




提前谢谢你:)

2 个答案:

答案 0 :(得分:1)

this.userId仅返回当前用户的ID,而不是对象。 this.userId.username无效。使用this.userId在Meteor.users集合中查找用户并返回username属性。

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

来自流星documentation

  

默认情况下,当前用户的用户名,电子邮件和个人资料会发布到客户端。

答案 1 :(得分:0)

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

Meteor.user().username;

我刚刚在客户端帮助器中测试了这个,而不是在autoValue中,但我认为这也可以在服务器上运行。