【问题标题】:Meteor: how do I create a post insert hook?Meteor:如何创建后插入挂钩?
【发布时间】:2014-09-24 17:24:34
【问题描述】:

我正在使用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
        }
      }
    }
});

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

我们真诚地感谢任何有关这方面的建议/帮助/示例。

【问题讨论】:

    标签: meteor


    【解决方案1】:

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

    meteor add matb33:collection-hooks
    

    然后创建你的钩子:

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

    【讨论】:

    • 我怎样才能让它在客户端上工作?我想设置一个会话变量,但得到会话未定义错误 - 500。
    • @DeBraid,您的代码在哪里,client 文件夹或共享位置?您在浏览器控制台中看到错误了吗?
    • 浏览器控制台中什么都没有,客户端有Foo.after.insert(...)这里的几个地方,但是坏了。 github.com/DeBraid/tracyandderek/commit/… JS 控制台中没有任何内容,但是在服务器上运行。
    【解决方案2】:

    一般来说,这些钩子还不可用 - 但它们是自动生成的: https://github.com/aldeed/meteor-autoform#callbackshooks

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

    【讨论】:

    猜你喜欢
    • 2016-06-08
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    相关资源
    最近更新 更多