0

我已经为此苦苦挣扎了几个星期。我想在我的网页中使用meteor-react-autoform 。我正在使用The Meteor Chef 的Base。非常感谢任何帮助

抱歉英语不好,这是文件。

这是我定义架构和集合的文件:

import { Mongo } from 'meteor/mongo';
import { SimpleSchema } from 'meteor/aldeed:simple-schema';
import { Factory } from 'meteor/dburles:factory';

export const Documents = new Mongo.Collection('Documents');

// Documentation -> https://github.com/MechJosh0/meteor-react-autoform
// Extend the schema to allow our materialForm object
SimpleSchema.extendOptions({
    materialForm: Match.Optional(Object)
});


Documents.allow({
  insert: () => false,
  update: () => false,
  remove: () => false
});

Documents.deny({
  insert: () => true,
  update: () => true,
  remove: () => true
});

Documents.schema = new SimpleSchema({
  title: {
    type: String,
      materialForm: {
          floatingLabelText: 'Your name',
          hintText: 'Sarah Smith...'
    }
  }
});

Documents.attachSchema(Documents.schema);

这是表单和插入处理程序

import React from 'react';
import { Bert } from 'meteor/themeteorchef:bert';
import { insertDocument } from '../../api/documents/methods.js';
import ReactAutoForm from 'meteor-react-autoform';
import { Documents } from '../../api/documents/documents';


const handleInsertDocument = (event) => {
  const target = event.target;
  const title = target.value.trim();

  if (title !== '' && event.keyCode === 13) {
    insertDocument.call({
      title
    }, (error) => {
      if (error) {
        Bert.alert(error.reason, 'danger');
      } else {
        target.value = '';
        Bert.alert('Document added!', 'success');
      }
    });
  }
};


export const AddDocument = () => (
    <ReactAutoForm
        muiTheme={true}
        onSubmit={handleInsertDocument}
        schema={Documents.schema}
        type="insert"
    />
);

这是定义了方法的文件:

import { Documents } from './documents';
import { SimpleSchema } from 'meteor/aldeed:simple-schema';
import { ValidatedMethod } from 'meteor/mdg:validated-method';

export const insertDocument = new ValidatedMethod({
  name: 'documents.insert',
  validate: new SimpleSchema({
    title: { type: String }
  }).validator(),
  run(document) {
    Documents.insert(document);
  }
});

export const updateDocument = new ValidatedMethod({
  name: 'documents.update',
  validate: new SimpleSchema({
    _id: { type: String },
    'update.title': { type: String, optional: true }
  }).validator(),
  run({ _id, update }) {
    Documents.update(_id, { $set: update });
  }
});

export const removeDocument = new ValidatedMethod({
  name: 'documents.remove',
  validate: new SimpleSchema({
    _id: { type: String }
  }).validator(),
  run({ _id }) {
    Documents.remove(_id);
  }
});
4

1 回答 1

0

您的集合和模式需要在不同的文件中单独定义。将您的架构移动到一个新文件中,将架构导入您的集合文件并通过 SimeplSchema 将其传输并存储为集合。然后在反应文件中导入架构文件,而不是集合文件。

示例可以在自述文件中找到。

如果您仍然遇到问题,我建议您在 Github 上创建一个项目,您可以分享您重现问题的位置,在meteor-react-autoform 项目上提交一个问题,我将提交一个包含更改的拉取请求以获取您的项目在职的。

于 2016-07-14T08:13:54.803 回答