未触发流星快速表单方法

Meteor quick form method not fired

我有一个 meteor 表单,我不希望用户能够在其中修改 ID,所以我省略了该字段。但是我将其添加回去以便能够继续更新。当我提交表单时,它卡住了并且服务器从未被调用过..

感谢任何帮助,谢谢!

donators.html:

<template name="dInfo">
  {{> dMove}}
  {{#if getDoc}}
    <label for="num">Numéro</label>
    <input type="text" id="num" class="form-control" placeholder="ID" value="{{getDoc._id}}" readonly>
    {{> quickForm schema=nwsc omitFields="_id" id="dUpt" doc=getDoc type="method" meteormethod="sayHi" buttonContent="Soumettre" buttonClasses="btn btn-lg btn-primary btn-block"}}
    <button type="button" class="btn btn-lg btn-primary btn-warning btn-block btn-del">Supprimer</button>
  {{/if}}
</template>

客户端:

AutoForm.hooks({
  dUpt: {
    before: {
      method: function(doc) {
        doc._id = donators.find().fetch()[cursor.get()]._id;
      }
    },
    onError: function(i, e) {
      console.log(i);
      console.log(e);
    }
  }
});

服务器端:

Meteor.methods({
  sayHi: function(ins) {console.log(ins);},
  updateDonator: function(ins) {
    if(Meteor.userId() === null)
      return;
    if(ins._id === undefined)
      return;
    if(check(ins, dSchema) === false)
      return;

    dSchema.clean(ins);
    ins.closed = false;
    donators.update({_id: ins._id}, {$set: ins});
    logs.insert({user: Meteor.userId(), email: Meteor.user().username, table: 'Donators', action:'Update', item: ins._id, date: new Date()});
  }
});

sayHi 从未记录过任何内容,我想它从未被调用过,也从未触发过任何错误。

谢谢!

根据 AutoForm documentation about callback hooks,在之前的事件中,您可以通过以下任一方式修改文档并return它:

// Then return it or pass it to this.result()
return doc; (synchronous)
return false; (synchronous, cancel)
this.result(doc); (asynchronous)
this.result(false); (asynchronous, cancel)

您的代码未 return 修改后的文档。将 return doc; 添加到之前 -> 方法:

AutoForm.hooks({
  dUpt: {
    before: {
      method: function(doc) {
        doc._id = donators.find().fetch()[cursor.get()]._id;
        return doc;  // Add this line
      }
    },
    onError: function(i, e) {
      console.log(i);
      console.log(e);
    }
  }
});

如果 AutoForm 没有取回 doc 对象,它将取消操作。