9

Я новичок в метеор и 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

ответ

1

хорошо решена .... Очень стыдно за это, так как это снова проблема с версией метеорного пакета - «accounts-ui». Иногда пакеты не обновляются в Индии из-за известной проблемы CDN.

Тем не менее, коллекция не создается сама по себе. Мне пришлось пойти на консоль mongoDB и создать его самостоятельно. Тогда только autoform отправил на него

0

Почему вы повторно импортируете метеор/метеорит в /server/main.js?

Для этого я использую экспорт, как это:

export const RecipesCollection = new Mongo.Collection('recipes'); 

, а затем использовать имя коллекции:

{{> quickForm collection="RecipesCollection" id="insertRecipeForm" type="insert" class="new-recipe-form" }} 
+0

Я не реимпортирую метеор/метеор. Он отличается для разных файлов в соответствии с системой es6 modulel. Также я не могу использовать RecipesCollection напрямую, поскольку его переменная модуля не является переменной окна или шаблона –

+0

-Пробовала его. Хотя вы правы в отношении нескольких метеорных/метеорных ввозов. Я это исправил. Коллекция RecipesCollection не может быть помещена непосредственно в quickform, поскольку она не находится в области окна. –