Meteor 集合不会在启动时自动创建,autoform 不会 post 到 mongo db
Meteor collection not being created automatically on start and autoform doesn't post to mongo db
我是流星和 mongo 数据库的新手。我正在使用 meteor@1.3.4.1 制作应用程序。我正在制作一个名为“/imports/api/collections/recipe.js”的文件。我在这里创建一个集合并将此文件导入到“/server/main.js”和“/client/main.js”中。在 recipe.js 中,只有我发布了 Recipe 集合,然后在我客户的文件中我订阅了它。到目前为止,一切都是正确的。然后我使用 autoform 创建了一个表单,它运行良好并被创建。但此表格永远不会发布。
首先,我的假设是当服务器启动时,那时我的数据库应该创建一个名为 recipe 的集合,但它没有。
其次,为什么自动表格不起作用?我认为是第一个原因。
在客户端,我可以通过 Mongol(流星玩具)查看我的食谱集。
我的食谱文件- '/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
为什么要在 /server/main.js 中重新导入 meteor/meteor?
为此,我使用这样的导出:
export const RecipesCollection = new Mongo.Collection('recipes');
然后使用集合名称:
{{> quickForm collection="RecipesCollection" id="insertRecipeForm" type="insert" class="new-recipe-form" }}
好的解决了....对此感到非常羞愧,因为这又是一个流星包的版本问题 - 'accounts-ui'。由于著名的 CDN 问题,有时包在印度不会升级。
不过,集合不会自行创建。我不得不去 mongoDB 控制台并自己创建它。然后只有自动表单发布到它
我是流星和 mongo 数据库的新手。我正在使用 meteor@1.3.4.1 制作应用程序。我正在制作一个名为“/imports/api/collections/recipe.js”的文件。我在这里创建一个集合并将此文件导入到“/server/main.js”和“/client/main.js”中。在 recipe.js 中,只有我发布了 Recipe 集合,然后在我客户的文件中我订阅了它。到目前为止,一切都是正确的。然后我使用 autoform 创建了一个表单,它运行良好并被创建。但此表格永远不会发布。
首先,我的假设是当服务器启动时,那时我的数据库应该创建一个名为 recipe 的集合,但它没有。
其次,为什么自动表格不起作用?我认为是第一个原因。
在客户端,我可以通过 Mongol(流星玩具)查看我的食谱集。
我的食谱文件- '/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
为什么要在 /server/main.js 中重新导入 meteor/meteor?
为此,我使用这样的导出:
export const RecipesCollection = new Mongo.Collection('recipes');
然后使用集合名称:
{{> quickForm collection="RecipesCollection" id="insertRecipeForm" type="insert" class="new-recipe-form" }}
好的解决了....对此感到非常羞愧,因为这又是一个流星包的版本问题 - 'accounts-ui'。由于著名的 CDN 问题,有时包在印度不会升级。
不过,集合不会自行创建。我不得不去 mongoDB 控制台并自己创建它。然后只有自动表单发布到它