Ошибка вызова API Web3 в функции автоопределения Meteor и вставке коллекции

Я запускаю приложение Meteor и столкнулся с ошибкой, которую не могу понять. Я использую быструю форму для вставки документа в коллекцию, и одно из полей - это хеш-адрес, который нужно получить из вызова API web3 с использованием автоматического значения.

//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 с устаревшими пакетами. При вызове "обновления метеора" звонки перестали работать, и отображается та же ошибка. Может кто-нибудь объяснить, пожалуйста, что может быть причиной этой ошибки.

Обновление: я правильно обновил aldeed: autoform и удалил aldeed: simple-schema и установил упрощенную схему NPM, как указано в readme пакетов. Ошибка все еще выбрасывается.

Спасибо

0 ответов

Другие вопросы по тегам