我遇到问题让我的Insert Autoform正常工作。我试图让它与示例http://autoform.meteor.com/insertaf类似,我的代码如下。我已经删除了不安全和自动发布
client/templates/venues/venue_submit.html
<template name="venueSubmit">
<!-- {{> quickForm collection="Venues" id="venueSubmit" type="insert"}} -->
{{#if isSuccessfulvenueSubmit }}
<h2>Thanks for the Venue </h2>
{{else}}
{{#autoForm id="insertVenueForm" type="insert" collection=Collections.Venues omitFields="createdAt" resetOnSuccess=true}}
{{> afQuickField name="Venue"}}
<div class="form-group">
<button type="submit" class="btn btn-primary">Add Venue</button>
<button type="reset" class="btn btn-default">Reset Form</button>
</div>
{{/autoForm}}
{{/if}}
</template>
client/templates/venues/venue_submit.js
Schemas = {};
Template.registerHelper("Schemas", Schemas);
Schemas.Venue = new SimpleSchema({
Venue: {
type: String,
label: "Venue Name",
max: 200,
autoform: {
placeholder: "Name of the Venue"
}
},
....
});
AutoForm.debug()
var Collections = {};
Template.registerHelper("Collections", Collections);
Venues = Collections.Venues = new Mongo.Collection("Venues");
Venues.attachSchema(Schemas.Venue);
Venues.allow({
insert: function (userId, doc) {
return true;
},
remove: function (userID, doc, fields, modifier) {
return true;
},
remove: function (userId, doc) {
return true;
}
});
if (Meteor.isClient) {
Meteor.subscribe("Venues")
};
server/Publications.js
Meteor.publish('venue', function () {
return Venues.find(id);
});
答案 0 :(得分:0)
AutoForm insert
类型生成文档并插入客户端。如果未安装autopublish
和insecure
软件包,则需要确保在客户端上订阅相应的集合。如果您不订阅它,它就不存在。
if (Meteor.isClient) {
Meteor.subscribe("Venues")
}
答案 1 :(得分:0)
您的问题是您在客户端文件夹中有venue_submit.js,但其内容并非仅供客户使用。
您可以完全保留venue_submit.html。 将venue_submit.js更改为:
Template.registerHelper("Schemas", Schemas);
AutoForm.debug();
Template.registerHelper("Collections", Collections);
Meteor.subscribe("Venues");
您只需要与客户端相关的行:两个模板助手,AutoForm调试(除了调试之外您不需要),以及订阅Venues集合。
更改server / Publications.js以包含与服务器端相关的所有内容:
Meteor.publish('Venues', function () {
return Venues.find({});
});
Venues.allow({
insert: function (userId, doc) {
return true;
},
remove: function (userID, doc, fields, modifier) {
return true;
},
remove: function (userId, doc) {
return true;
}
});
它包括发布功能和集合的权限。
现在创建lib / schema.js:
Schemas = {};
Schemas.Venue = new SimpleSchema({
Venue: {
type: String,
label: "Venue Name",
max: 200,
autoform: {
placeholder: "Name of the Venue"
}
}
});
Collections = {};
Venues = Collections.Venues = new Mongo.Collection("Venues");
Venues.attachSchema(Schemas.Venue);
lib
中的所有内容都可供客户端和服务器使用,并且将首先加载此文件夹的内容,以便架构和集合定义可供所有其余代码使用。请注意,集合中缺少var
关键字。使用var
将范围设置为仅在文件中。省略它会使整个代码中的Collections变量可用。