9

Ich bin neu zu Meteor und Mongo db. Ich mache eine Bewerbung mit [email protected] Ich mache eine Datei namens '/imports/api/collections/recipe.js'. Hier erstelle ich eine Sammlung und importiere diese Datei in '/server/main.js' und '/client/main.js'. Nur in recipe.js veröffentliche ich die Rezept-Sammlung und dann in der Datei meines Klienten, die ich abonniere. Bis zu diesem Punkt ist alles in Ordnung. Dann erstelle ich ein Formular mit AutoForm, das gut funktioniert und erstellt wird. Aber diese Form wird nie veröffentlicht.Meteor Sammlung wird nicht automatisch beim Start erstellt und AutoForm nicht nach Mongo db

Zuerst war meine Annahme, dass, wenn der Server startet, dann an dieser Stelle meine Datenbank eine Sammlung namens Rezept erstellt haben sollte, aber es nicht tut.

Zweitens, warum Autoform nicht funktioniert? Ich denke es ist aus dem ersten Grund.

Auf Client-Seite, bekomme ich meine Rezept-Sammlung durch Mongol (von Meteor-Spielzeug) zu sehen.

Mein Rezept File- '/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; 

Datei Meines Servers: '/server/main.js':

import { Meteor } from 'meteor/meteor'; 
import '/imports/startup/server/start.js'; 
import '/imports/api/collections/recipe.js'; 

Meine Kunden js-Datei:

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; 
    } 
}); 

Neues Rezept Vorlage:

<template name="NewRecipe"> 
    <div class="new-recipe-container"> 
     {{> quickForm collection=recipesCollection id="insertRecipeForm" type="insert" class="new-recipe-form" }} 
    </div> 
</template> 

Ich verwende Pakete: Collection2 und AutoForm. Jede Hilfe oder Anregung wäre willkommen. Danke

Fühlen Sie sich frei, es zu arbeiten, indem Sie mein Meteorlernprojekt forking. Wäre sehr dankbar. - https://github.com/devin6391/meteorLearn1/tree/master/recipebook

Antwort

1

ok gelöst .... dieses sehr schämen, da dies wieder ein Versions-Problem mit einem Meteor-Paket - "accounts-ui". Manchmal werden Pakete in Indien aufgrund des berühmten CDN-Problems nicht aktualisiert.

Dennoch, Sammlung wird nicht von selbst erstellt. Ich musste zur mongoDB-Konsole gehen und sie selbst erstellen. Dann nur Autoform darauf gepostet

0

Warum importieren Sie Meteor/Meteor in /server/main.js erneut?

zu tun, dass ich wie folgt verwenden Export:

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

und dann den Namen der Sammlung verwenden:

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

Ich bin nicht Meteor/Meteor reimportieren. Es ist unterschiedlich für verschiedene Dateien wie es6 Module System. Auch RecipesCollection kann nicht direkt als Variable eines Moduls verwendet werden, nicht als Variable eines Fensters oder einer Vorlage –

+0

-Tried it. Obwohl Sie mit mehreren Meteor/Meteor-Importen recht haben. Das habe ich behoben. Die RecipesCollection-Auflistung kann nicht direkt in Quickform eingefügt werden, da sie nicht im Fensterbereich enthalten ist. –