Oraclize计算查询。将格式化JSON传递给nodejs

时间:2018-06-06 10:10:57

标签: json node.js docker ethereum solidity

我使用oraclize计算查询来调用启动nodejs并运行调用API的脚本的dockerfile。我尝试将头文件作为字符串变量传递给dockerfile,然后使用JSON.parse()在js上格式化该变量。问题是,就我测试而言,每个环境都使用不同的字符串变量。 JSON.parse()需要一个具有内部双引号的格式良好的json,但dockerfile需要双引号来启动字符串变量。当我测试硬编码变量时,如果我在dockerfile中格式化json,如下所示

CMD node index.js "{\"key\":value}"

一切似乎都很好。但是如果我尝试在remix或vue中使用它,则计算查询会返回错误。 (Remix甚至不让我使用如上所示格式化的字符串变量)

所以现在我完全陷入困境,并且不知道如何通过所有环境将json解析为index.js文件。

坚固方法:

function  request(string _method,string _url,string _header,string _params) payable {
    oraclize_query("computation",[IPFSline,_method,_url,_header,_params]);
}

dockerfile:

WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
CMD node index.js $ARG0 $ARG1 $ARG2 $ARG3 && exit 0

node.js文件:

const header = process.argv[4];
var options = {
  uri: '',
  method: '',
  time: true
};
options.headers=JSON.parse(header);

这是我的第一个问题,我希望我写得正确。

1 个答案:

答案 0 :(得分:0)

我认为你其实有很多选择。

  1. 你可以从Solidity - >中获得被转义的内部双引号。 Oraclize,简单地用单引号括起来,然后在Solidity中使用未转义的引号。 Oraclize会自动为它看到的任何双引号添加一个转义。

      

    oraclize_query("computation", ['fake','{"key":value}']);   根据{{​​3}}

    在Oraclize引擎中生成"{\"key\":value}"
  2. Oraclize已经提供了一个示例,能够通过使用计算队列的相同路径,通过Python请求库来执行您需要的操作以及更多内容:API link