Я новичок в метеор и mongo db. Я делаю заявку, используя [email protected] Я делаю файл с именем «/imports/api/collections/recipe.js». Здесь я создаю коллекцию и импортирую этот файл в «/server/main.js» и «/client/main.js». В recipe.js только я публикую сборку рецептов, а затем в файле моего клиента я подписываюсь на нее. До сих пор все правильно. Затем я создаю форму с использованием autoform, которая хорошо работает и создается. Но эта форма никогда не публикуется.Метеорная сборка не создается автоматически при запуске и автоформ не публикуется в mongo db
Прежде всего, мое предположение состояло в том, что когда сервер запускается, то в этот момент мой db должен был создать коллекцию с именем recipe, но это не так.
Во-вторых, почему автоформат не работает? Я думаю, это из-за первой причины.
На стороне клиента я могу увидеть коллекцию рецептов через монгол (из метеорных игрушек).
Мой рецепт файл- '/imports/api/collections/recipe.js': файл
import { Meteor } from 'meteor/meteor';
import { Mongo } from 'meteor/mongo';
import { SimpleSchema } from 'meteor/aldeed:simple-schema';
var RecipesCollection = new Mongo.Collection('recipes');
RecipesCollection.allow({
insert(userId, doc){
return !!userId;
}
})
var RecipeSchema = new SimpleSchema({
name: {
type: String,
label: "Name"
},
desc: {
type: String,
label: "Description"
},
author: {
type: String,
label: "Author",
autoValue(){
return this.userId
},
autoform:{
type: "hidden"
}
},
createdAt: {
type: Date,
label: "Created At",
autoValue(){
return new Date();
},
autoform:{
type: "hidden"
}
}
});
RecipesCollection.attachSchema(RecipeSchema);
if (Meteor.isServer) {
// This code only runs on the server
Meteor.publish('recipes', function tasksPublication() {
return RecipesCollection.find({author: this.userId});
});
}
export const Recipes = RecipesCollection;
моего сервера: '' /server/main.js:
import { Meteor } from 'meteor/meteor';
import '/imports/startup/server/start.js';
import '/imports/api/collections/recipe.js';
Мой клиента JS файл:
import { Template } from 'meteor/templating';
import { Recipes } from '/imports/api/collections/recipe.js';
import '/imports/ui/pages/NewRecipe.html';
Template.NewRecipe.onCreated(function bodyOnCreated() {
Meteor.subscribe('recipes');
})
Template.NewRecipe.helpers({
recipesCollection() {
return Recipes;
}
});
Новый шаблон Рецепт:
<template name="NewRecipe">
<div class="new-recipe-container">
{{> quickForm collection=recipesCollection id="insertRecipeForm" type="insert" class="new-recipe-form" }}
</div>
</template>
Я использую пакеты: Collection2 и autoform. Любая помощь или предложение будут оценены. Спасибо
Не стесняйтесь, чтобы это сработало, раздвинув мой проект изучения метеора. Было бы очень благодарно. - https://github.com/devin6391/meteorLearn1/tree/master/recipebook
Я не реимпортирую метеор/метеор. Он отличается для разных файлов в соответствии с системой es6 modulel. Также я не могу использовать RecipesCollection напрямую, поскольку его переменная модуля не является переменной окна или шаблона –
-Пробовала его. Хотя вы правы в отношении нескольких метеорных/метеорных ввозов. Я это исправил. Коллекция RecipesCollection не может быть помещена непосредственно в quickform, поскольку она не находится в области окна. –