Существует опечатка, которая вызывает ошибку отслеживания.Ваша коллекция намен "books"
, но вы передаете "Books"
своему quickForm
.Поскольку AutoForm
не может найти коллекцию с именем "Books"
в глобальной области видимости, она выдаст ошибку.
Этот подход также предполагает, что Books
находится в области видимости окна.
Если вы новичокзатем в JS вы можете сначала прочитать о областях видимости и области видимости:
https://developer.mozilla.org/en-US/docs/Glossary/Scope
https://developer.mozilla.org/en-US/docs/Web/API/Window
Почему глобальные переменные считаются плохой практикой?
Меньше подверженных ошибкам шаблонов
Альтернативным подходом было бы импортировать Books
в ваш шаблон (как вы уже сделали) и предоставить егоquickForm
через помощника по шаблонам :
main.html
<template name="hello">
{{> quickForm collection=getCollection id="bookUpdateForm" type="insert"}}
</template>
Примечание getCollection
, которое в основном вызывает помощникаопределите в своем разделе помощников по шаблонам:
main.js
import './hello.html';
import { Books } from '../../../api/links/books.js';
Template.hello.onCreated(function () {
Meteor.subscribe('books');
});
Template.hello.helpers({
getCollection() {
return Books;
}
});
Тем самым вы а) избежали (глобальную) область видимости окна и б) избежали ошибок из-зак орфографическим ошибкам, потому что вы передаете ссылку на коллекцию непосредственно в quickForm.
Коллекция JS
import SimpleSchema from 'simpl-schema';
export const Books = new Mongo.Collection("books");
const Book = new SimpleSchema({
title: {
type: String,
label: "Title",
max: 200
},
author: {
type: String,
label: "Author"
},
copies: {
type: SimpleSchema.Integer,
label: "Number of copies",
min: 0
},
lastCheckedOut: {
type: Date,
label: "Last date this book was checked out",
optional: true
},
summary: {
type: String,
label: "Brief summary",
optional: true,
max: 1000
}
});
Books.attachSchema(Book);