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 中,但我认为这也应该在服务器上工作。
我想使用 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 中,但我认为这也应该在服务器上工作。