我想在一个带有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);

提前谢谢你:)
答案 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中,但我认为这也可以在服务器上运行。