Oraclize вычислительный запрос.Перенос форматированного JSON в nodejs - PullRequest
0 голосов
/ 06 июня 2018

Я использую запрос вычисления oraclize для вызова файла dockerfile, который запускает nodejs и запускает скрипт, который вызывает API.Я пытаюсь передать заголовок как строковую переменную в файле dockerfile, а затем форматирую эту переменную в js, используя JSON.parse ().Проблема в том, что, насколько я тестировал, каждая среда по-разному использует строковые переменные.JSON.parse () нужен хорошо отформатированный json с внутренними двойными кавычками, но dockerfile нужны двойные кавычки для запуска строковой переменной.Когда я тестировал жесткое кодирование переменных, если я форматирую json в dockerfile, как показано ниже

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]);
}

Файл Docker:

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);

Thisмой первый вопрос здесь, надеюсь, я правильно его написал.

1 Ответ

0 голосов
/ 06 июня 2018

Я думаю, что у вас здесь есть несколько вариантов.

  1. Вы можете получить экранирование внутренних двойных кавычек из Solidity -> Oraclize, просто заключив их в одинарные кавычки, а затем просто используя неэкранированные кавычки в Solidity.Oraclize автоматически добавит escape к любым двойным кавычкам, которые он увидит.

    oraclize_query("computation", ['fake','{"key":value}']); приводит к "{\"key\":value}" в движке Oraclize согласно API-ссылке

  2. Oraclize уже предоставляет пример, способный делать то, что вам нужно и даже больше, по тому же пути использования вычислительных запросов через библиотеку запросов Python: Github repo

...