Ethereum 将合同结果标记存储在变量中

Ethereum 将合同结果标记存储在变量中,ethereum,solidity,contract,web3js,go-ethereum,Ethereum,Solidity,Contract,Web3js,Go Ethereum,我有一个像这样的web3常量 const test = contract_instance.methods.getPost(15).call().then(console.log); Result { '0': '2017-08-28', '1': '19:18:04.986593', '2': '07:17:00', '3': '11112323', '4': '12', date: '2017-08-28', login_time: '19:18:04.9865

我有一个像这样的web3常量

const test = contract_instance.methods.getPost(15).call().then(console.log);
Result {
  '0': '2017-08-28',
  '1': '19:18:04.986593',
  '2': '07:17:00',
  '3': '11112323',
  '4': '12',
  date: '2017-08-28',
  login_time: '19:18:04.986593',
  logout_time: '07:17:00',
  login_device_id: '11112323',
  user_id: '12' }
这会像这样返回结果

const test = contract_instance.methods.getPost(15).call().then(console.log);
Result {
  '0': '2017-08-28',
  '1': '19:18:04.986593',
  '2': '07:17:00',
  '3': '11112323',
  '4': '12',
  date: '2017-08-28',
  login_time: '19:18:04.986593',
  logout_time: '07:17:00',
  login_device_id: '11112323',
  user_id: '12' }
现在,当我想通过console.log(test[0])来控制台单个标记时返回未定义的
我的方法是将每个结果标记存储在其单独的变量中。我需要一些建议

通过将调用与.then(…)链接,返回的值是Promise类型的,而不是您期望的结果对象(以及写入控制台的内容),并且无法通过索引访问。 有关更多信息,请参阅

then()
将函数作为在履行承诺时调用的参数。然后可以将值添加到数组中,例如:

var results = []
contract_instance.methods.getPost(15).call().then(function(value){
   console.log(value)
   results.push(value)
});

results[0]
将成为您正在查找的结果对象,并且
results[0]['0']
将为您提供日期“2017-08-28”等信息

那么,实现目标的确切方式是什么呢。我对web3、node和Contracts是完全陌生的。是的,这在实例内部工作,但如果我想在实例外部控制它,它不会显示数据。只是显示一个空的卷曲括号。非常感谢,亲爱的。