Как добавить многострочный безболезненный код в nodejs - PullRequest
0 голосов
/ 18 марта 2019

Итак, в моем js-коде есть строка:

            var _script = {
                _script: {
                    script: {
                        lang: 'painless',
                        source: `
                        """
                        if(1>2){
                            params._source.id;
                        }
                        else{
                            params._source.id;
                        }
                        """
                        `
                    },
                    type: 'string',
                    order: params._source.id
                }
            }

Это не удастся.Я вижу в журнале это сообщение об ошибке:

,\"reason\":\"unexpected token ['\\\"\\\\n                            if(1>2){\\\\n                                params._source.id;\\\\n                            }\\\\n                            else{\\\\n                                params._source.id;\\\\n                            }\\\\n                            \\\"'] was expecting one of [{<EOF>, ';'}].\"}}}]},

Я пытался сначала иметь без тильды-символа.И тогда это также терпит неудачу.Затем я попытался использовать тильду в начале, что-то вроде:

var _script = `{                

Дело в том, что окончательный JSON, который будет отправлен на эластичный, не показан в коде выше.Так что «_script» - это лишь малая часть всего json.Мне было интересно, добавил ли я тильду в самом начале и в конце всего JSON.Может быть, это может сработать?Мне нужно разобраться, где это.Но только в теории: как вы думаете, проблема в этом?Положить тильду вокруг всего JSON?Или что-то еще?

1 Ответ

1 голос
/ 18 марта 2019

Тройной " не является допустимым JSON, он работает только внутри стека Elastic (т.е. от Kibana Dev Tools до ES).

Обычно я делаю это из Node.js, добавляя каждую строку в массив, а затем присоединяюсь к этому массиву, например:

const code = [];
code.push("if(1>2){");
code.push("params._source.id;");
code.push("} else {");
code.push("params._source.id;");
code.push("}");

source = code.join(" ");

Это не супер разборчиво, я признаю. Другой способ - использовать хранимые скрипты , чтобы вы могли просто ссылаться на свой скрипт по идентификатору в Node.js.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...