Meteor Autovalue函数和集合插入

时间:2017-03-01 19:09:21

标签: api meteor meteor-methods

我正在运行Meteor应用程序并面临一个我无法弄清楚的错误。我使用快速表单将文档插入到集合中,其中一个字段是使用auto值从web3 api调用获取的哈希地址。

//Schema with autovalue to obtain hash address via web3 call
CustomerSchema = new SimpleSchema({
  customerBlockchainAddress: {
    type: String,
    label: "Blockchain Address",
    autoValue: function() {
         var address = web3.personal.newAccount("password");
         console.log("Address: ", address);
         return address;
     },
     autoform: {
         type: "hidden"
     }
  },
//additional schema fields 

该方法由快速表单调用。见下文:

//HTML
<template name="NewCompany">
    <div class="new-document-container">


    {{#if isSuccessfulCompany }}
        <h3 class="success">Successfully registered company information. <br /> <br /> </h3>
    {{else}}
        <h3>Register Company Information:</h3><br />
        {{> quickForm collection="Companies" id="insertCompanyForm" type="method" meteormethod="insertCompany" class="new-Company-form"}}
    {{/ if}}

</div>

插入方法:

insertCustomer:function(customer){
    CustomerSchema.clean(customer, {
      extendAutoValueContext: {
        isInsert: true,
        isUpdate: false,
        isUpsert: false,
        isFromTrustedCode: false
      }
    });
    check(customer, CustomerSchema);
    if (! this.userId) {
        throw new Meteor.Error('not-authorized');
    }
    if(! Roles.userIsInRole(this.userId,'individual')){
        throw new Meteor.Error('not-authorized for your role');
    }
    //custom API that takes fields from the customer doc and stores    
    them on the blockchain
    Meteor.call('individualRegistration', customer, function (error,            
    result) {
             if (error) {
                 console.log("error", error);
             };
             console.log(result);
         });
    return Customers.insert(customer);
}

我得到的错误是:

Exception while invoking method 'insertCustomer' TypeError:       
XMLHttpRequest is not a function

使用日志语句,AutoValue函数正在按预期从web3调用获取新地址,但在抛出错误之前,它会使用不同的地址打印四次。如果我只使用字符串对地址进行硬编码,则插入函数可以按预期使用自定义API正常工作。

当API调用工作并插入集合时,我回滚到我的应用程序的先前版本,并且该版本使用过期版本的Meteor和过期软件包。在调用“meteor update”时,调用停止工作并显示相同的错误。有人可以解释可能导致此错误的原因。

更新:我正确更新了aldeed:autoform并删除了aldeed:simple-schema并按照软件包的自述文件中的指示安装了NPM简化模式。错误仍在被抛出。

由于

0 个答案:

没有答案