簡體   English   中英

流星應用未將元素插入集合

[英]Meteor app not inserting elements into collection

我正在學習Meteor JS,並按照教程構建菜單構建器購物清單。 我正在嘗試向其中添加一些功能。 我成功添加了一項功能,但是現在我試圖創建一個組織功能,用戶可以在其中加入組織並查看與該組織相關的所有購物清單。 第一步是允許用戶添加組織。

出現該表單,並且我能夠從控制台插入數據庫,但是當我使用自動形成表單時,對象沒有插入數據庫中。

我最近從Meteor 1.3升級到1.4。 我不認為這是個問題,因為該應用程序上的所有其他表單仍在正確插入。

我感覺它與訂閱/發布有關,但是我不確定自己做錯了什么。

HTML- neworganization.html

        <template name='NewOrganization'>
    <div class='new-organization-container'>

        <i class='fa fa-close'></i>

          {{#autoForm collection='Organizations' id='insertOrganizationForm'  type='insert'}}
<div class='form-group'>
      {{> afQuickField name='organization'}}
      </div>
      <div class='form-group'>
      {{> afQuickField name='members'}}
      </div>



    <button type="submit" class="btn btn-primary">Add</button>
  {{/autoForm}}

    </div>


</template>

organizations.html

<template name='Organizations'>
<h3>Your Organizations</h3>
{{#if $.Session.get 'newOrganization'}}
        {{> NewOrganization }}
{{else}}
<button class='btn btn-organization btn-primary'>Add an Organization</button>
<button class='btn btn-join'>Join an Organization</button>
<button class='btn btn-deny'>Leave an Organization</button>
{{/if}}
<section class='organization-list'>
        {{#if Template.subscriptionsReady}}
        {{#each organizationList}}
            {{> OrganizationItem}}
        {{/each}}
    {{else}}
        <p>Loading...</p>
    {{/if}}

JS- Organizations.js

Template.Organizations.onCreated(function() {
  this.autorun(() => {
    this.subscribe('organizations');
  });
});

Template.Organizations.helpers({
    organizations()  {
        return Organizations.find({});
    }
});


Template.Organizations.events({
      'click .btn-organization': () => {
        Session.set('newOrganization', true);
      }
});

Template.NewOrganization.helpers({
    organizationList: () => {

      var organizationItems = Organizations.find({});

        return organizationItems;
    }
});

newOrganization.js

    if (Meteor.isClient) {
    Meteor.subscribe('organizations');
} 
Template.NewOrganization.events ({
    'click .fa-close': function () {
        Session.set('newOrganization', false);
    }
});

收藏/ organizations.js

    import SimpleSchema from 'simpl-schema';
SimpleSchema.extendOptions(['autoform']);


Organizations = new Mongo.Collection('organizations');

Organizations.allow({
    insert: function(userId){
        return !!userId;
    },
    update: function(userId, doc){
        return !!userId;
    }
});


OrganizationSchema = new SimpleSchema ({
    organization: {
        label: "Organization Name",
        type: String
    },
    id: {
        label: "ID",
        type: String,
        autoform: {
            type: "hidden"
        }

    },
    members: {
        type: Array
    },
        "members.$": Object,
        "members.$.name": String,
        "members.$.role": String,
          inOrganization: {
            type: Boolean,
            defaultValue: true,

            autoform: {
                type: 'hidden'
            }
      },

    createdAt: {
        type: Date,
        label: "CreatedAt",
        autoform: {
            type: "hidden"
        },
        autoValue: function() {
            return new Date();
        }
    }
});

Meteor.methods({
    deleteOrganizations: function(id) {
        Organizations.remove(id);
    }
});

Organizations.attachSchema(OrganizationSchema);

問題在於方案的設計方式。 我已經在架構中插入了一個ID。 我的理由是,我想擁有一種在組織中添加和刪除成員的方法。 我沒有考慮的是Mongo會自動為數據庫對象生成一個ID,並且通過以這種方式設計架構,我正在制造沖突。 我從架構中刪除了ID,並刪除了問題。

這是新的collections / organizations.js文件:

import SimpleSchema from 'simpl-schema';
SimpleSchema.extendOptions(['autoform']);

Organizations = new Mongo.Collection('organizations');

Organizations.allow({
    insert: function(userId){
        return !!userId;
    },
    update: function(userId, doc){
        return !!userId;
    }
});


OrganizationSchema = new SimpleSchema ({
    organization: {
        label: "Organization Name",
        type: String
    },
    members: {
        type: Array
    },
        "members.$": Object,
        "members.$.name": String,
        "members.$.role": String,

          inOrganization: {
            type: Boolean,
            defaultValue: true,

            autoform: {
                type: 'hidden'
            }
      },

    createdAt: {
        type: Date,
        label: "CreatedAt",
        autoform: {
            type: "hidden"
        },
        autoValue: function() {
            return new Date();
        }
    }
});

Meteor.methods({
    deleteOrganizations: function(id) {
        Organizations.remove(id);
    }
});

SimpleSchema.debug = true;

Organizations.attachSchema(OrganizationSchema);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM