流星:我如何创建一个插入后挂钩?

时间:2014-09-24 17:24:35

标签: meteor

我正在使用autoform来创建表单。我有下面的模板,在提交表单时正确地将数据插入到集合中。我想要做的是在成功完成“ContactDetails”集合的插入后,将记录插入另一个集合。

<template name="contactDetailsForm">
 {{#if submitted}}
    {{> quickForm collection="ContactDetails" omitFields="createdBy" doc=editingDoc id="contactDetailsForm" type="update"}}
 {{else}}
         {{> quickForm collection="ContactDetails" omitFields="createdBy" id="contactDetailsForm" type="insert"}}
 {{/if}}
</template>

据我所知,我需要添加一个钩子。我真的不确定我在做什么。我想它看起来像这样:

  AutoForm.addHooks(['contactDetailsForm'], {
    after: {
      insert: function(error, result) {
        if (error) {
        console.log("Insert Error:", error);
        } else {
        console.log("Insert Result:", result);
        // NOW DO INSERT INTO OTHER COLLECTION
        }
      }
    }
});

有人能告诉我如何在不同的集合中成功完成插入后,如何将记录插入另一个集合中?

对此的任何建议/帮助/示例都将深表感谢。

2 个答案:

答案 0 :(得分:3)

matb33:collection-hooks包是创建此类挂钩的标准方法。首先用

添加它
meteor add matb33:collection-hooks

然后创建你的钩子:

ContactDetails.after.insert(function(userId, doc) {
  console.log("Inserted:", this._id);
  ...
});

答案 1 :(得分:1)

一般情况下,钩子还没有 - 但是它们在autoform中: https://github.com/aldeed/meteor-autoform#callbackshooks

如果您没有使用autoform,我会使用Meteor方法进行插入,您可以在插入第一个插入后执行插入后插入。 见https://www.discovermeteor.com/blog/meteor-methods-client-side-operations/