首页 文章

模拟调用'deals.insert'错误的效果时出现异常

提问于
浏览
0

我正在尝试使用react和meteor将表单数据提交到数据库 .

我有一个表单的AddDeal组件和一个交易的集合,以及它内部的方法 .

错误

模拟调用'deals.insert'的效果时出现异常ReferenceError:_id未定义

获取错误:单击提交时需要ID .

插入时我不知道如何处理_id .

这是我的代码,谢谢你的帮助!

onSubmit(e) function

onSubmit(e) {
    e.preventDefault();

    const title = this.state.title.trim();
    const description = this.state.description;
    const category = this.state.category;
    const location = this.state.location;
    const price = this.state.price.trim();

    e.preventDefault();

    if (title, description, category, location, price) {
      Meteor.call('deals.insert', title, description, category, location, price);
    }

    alert('Title is: ' + this.state.title + 'Description is: ' + this.state.description + 'Category is: ' + this.state.category
          + 'Location is: ' + this.state.location + 'Price: ' + this.state.price);

    this.setState({
      title: '',
      description: '',
      category: 'technology',
      location: 'USA',
      price: '0.00'
    });
  }

Insert method

export const Deals = new Mongo.Collection('deals');

if (Meteor.isServer) {
  Meteor.publish('deals', function () {
    return Deals.find({ userId: this.userId });
  });
}

Meteor.methods({
  'deals.insert'(_id, title, description, category, price, location) {
    if (!this.userId) {
      throw new Meteor.Error('not-allowed');
    }

    new SimpleSchema({
      _id: {
        type: String,
        min: 1
      },
      title: {
        type: String,
        optional: true
      },
      description: {
        type: String,
        optional: true
      },
      category: {
        type: String,
        optional: true
      },
      location: {
        type: String,
        optional: true
      },
      price: {
        type: Number,
        optional: true
      }
    }).validate({

    });

    Deals.insert({
      _id,
      title,
      description,
      category,
      location,
      price,
      createdAt: Date(),
      userId: this.userId
    });
  }
});

1 回答

  • 1

    deals.insert ,您正在验证参数 this.userId 而不是 this._id

    我想你需要改变这个:

    'deals.insert'(_id, title, description, category, price, location) {
        if (!this.userId) {
          throw new Meteor.Error('not-allowed');
        }
    ...
    

    对此:

    'deals.insert'(_id, title, description, category, price, location) {
        if (!this._id) {
          throw new Meteor.Error('not-allowed');
        }
    

相关问题