передача параметров, не закодированных в URL, вызову ajax в node.js

#javascript #node.js #couchdb #couchdb-nano

#javascript #node.js #couchdb #couchdb-nano

Вопрос:

Я пытаюсь передать параметры со своего веб-сайта на сервер couchdb через node.js сервер. Мне абсолютно необходимо передать {} в URL. Не строка, не пустой объект, фактические символы {}. Он используется для определения end_key параметра в представлениях couchdb.

На данный момент мой вызов выглядит следующим образом :

 let url = "/trades";
let ajax_options = {
    data:{
        design_name:'bla',
        view_name:'blabla',
        params_view:{
            group_level:2,
            start_key:["1",0],
            end_key:["1",{}]
        }
    }
};
$.ajax(url,ajax_options).then((res) => { ... });
  

когда он проходит через NodeJs и nano библиотеку с

 db.view(req.query.design_name, req.query.view_name, req.query.params_view)
  

end_key объект в params_view становится ["1"] вместо ["1",{}] того, что я хотел бы видеть.

Я проверил, что при правильном значении для end_key представление дает мне ожидаемый результат.

Как предотвратить возникновение такого поведения?

Комментарии:

1. Если вам нужны просто символы, почему бы вам не передать их в виде строки?

2. пробовал и это, но couchdb должен получить {}, а не «{}», чтобы правильно интерпретировать end_key.

3. обходной путь для строковых ключей — просто добавить «0» в конец, и все будет сделано, но я бы предпочел иметь возможность использовать универсальное решение.

4. Другим обходным путем является использование символа "ufff0" , поскольку это самый высокий символ юникода.

5. Спасибо, Алексис. Будет ли это работать и для numbers?