我正在运行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简化模式。错误仍在被抛出。
由于