我使用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);
这是我的第一个问题,我希望我写得正确。
答案 0 :(得分:0)
我认为你其实有很多选择。
你可以从Solidity - >中获得被转义的内部双引号。 Oraclize,简单地用单引号括起来,然后在Solidity中使用未转义的引号。 Oraclize会自动为它看到的任何双引号添加一个转义。
在Oraclize引擎中生成
oraclize_query("computation", ['fake','{"key":value}']);
根据{{3}}"{\"key\":value}"
Oraclize已经提供了一个示例,能够通过使用计算队列的相同路径,通过Python请求库来执行您需要的操作以及更多内容:API link