2016-01-28 3 views
1

Мне удалось сохранить путь к файлу в DocumentDB.Недопустимый токен документа documentdb, когда

Когда я пытаюсь выполнить поиск документа с использованием C# с определенным путем, он генерирует исключение из DocumentDB. Путь, который я пытаюсь выполнить, - «\\ Dev4 \ ete \», как показано в сообщении об ошибке.

Когда я попытался выполнить запрос ниже на портале. Он успешно возвращает мне результат.

Кто-нибудь сталкивался с этой проблемой раньше? Что может быть основной причиной?

Screenshot

+0

На вашем снимке экрана, что такое client.Nodes? Является ли Nodes клиентским списком, который содержит результаты запроса DocumentDB? –

+0

Не могли бы вы показать фактический запрос, который вы выполняете, который заполняет client.Nodes (где - код client.CreateDocumentQuery), который фактически выполняет запрос?) –

+0

Привет, Райан. Этот узел успешно записывается в db. Я могу найти его с помощью портала, как показано выше. Это просто дает мне эту ошибку при использовании api. Я думаю, что «\» каким-то образом признан недействительным персонажем. Это действительно раздражает меня до такой степени, что мне действительно нужно изменить все '\' на '/' перед тем, как сохранить путь к db, чтобы я мог получить их позже. – Odin

ответ

0

Причиной этого является недостаток в том, что «\» является маскирующим.

Итак, когда бэкэнд получает запрос «SELECT * FROM c WHERE c.name =" \\ Dev4 \ ete \ ", он интерпретирует это как \ Dev4 \ ete \, а затем последний, вызывает проблему, потому что она рассматриваются как буквальный экранирующий символ ни с чем после него.

Вы должны бежать каждое использование «\» с другой «\», т.е. примера запрос показан выше будет

SELECT * FROM c WHERE c.Name = "\\\\\\\\Dev4\\\\ete\\\\" 

То же, если вы имел буквальный \ n в имени вашего узла, вам нужно было бы избежать escape-символов \ n

Смежные вопросы