Ошибка вызова 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 пакетов. Ошибка все еще выбрасывается.
Спасибо