我使用简单模式和quickForm来允许用户将文档保存到我的集合中,但我想添加Meteor.userId()
和Meteor.user().username
字段,最终只返回特定于当前用户的数据。由于quickForms不显示其insert()
方法,因此我不确定在哪里添加字段。
以下是我用来允许用户将Speakers
保留到集合的模式。
Speakers = new Meteor.Collection('speakers');
Speakers.attachSchema(new SimpleSchema({
first: {
type: String,
label: "first name",
max: 200
},
last: {
type: String,
label: "last name",
max: 200
},
date: {
type: Date,
label: 'date',
optional: true
}
}));
答案 0 :(得分:1)
我不确定我是否正确理解你,但为什么不
Speakers.attachSchema(new SimpleSchema({
first: {
type: String,
label: "first name",
max: 200
},
last: {
type: String,
label: "last name",
max: 200
},
date: {
type: Date,
label: 'date',
optional: true
},
userId: {
type: String
}
}));
如果您想根据插入记录的用户自动填写
,请使用autovalue要使用quickForm而不显示userId字段,您可以执行以下操作
{{> quickForm collection="Speakers" id="speakerForm" type="insert" omitFields="userId"}}
答案 1 :(得分:1)
如果你想省略输入表格中的一些字段并自己用值填充这些字段,你可以使用带有前挂钩的afQuickField。
首先,将userId和username字段添加到架构中。
{{#autoForm collection=speakerCollection id="speakerForm" type="insert"}}
{{> afQuickField name="first"}}
{{> afQuickField name="last"}}
{{> afQuickField name="date"}}
<div>
<button type="submit" class="btn btn-primary">Submit</button>
<button type="reset" class="btn btn-default">Reset</button>
</div>
{{/autoForm}}
您需要添加一个助手来返回speakerCollection
Template.registerHelper("speakerCollection", Speakers);
然后添加一个before hook来添加userId:
AutoForm.hooks({
speakerForm: {
before: {
"insert": function (doc) {
doc.userId = Meteor.userId();
return doc;
},
}
});
答案 2 :(得分:0)
您可以使用autoValue
来定义自动插入的值:
Speakers = new Meteor.Collection('speakers');
Speakers.attachSchema(new SimpleSchema({
userId: {
type: String,
autoValue: function() {
return Meteor.user()._id;
}
},
author: {
type: String,
autoValue: function() {
return Meteor.user().username;
}
},
}));
如果您想省略autoform中的某些字段,可以设置autoform.omit = true
:
userId: {
type: String,
autoValue: function() {
return Meteor.user()._id;
},
// omit the userId field in autoform forms
autoform: {
omit: true
}
}