【问题标题】:Documentdb invalid string literal token whenDocumentdb 无效的字符串文字标记时
【发布时间】:2016-01-28 17:08:29
【问题描述】:

我设法将文件路径保存到 DocumentDB。

当我尝试使用具有特定路径的 C# 搜索文档时,它会从 DocumentDB 抛出异常。我尝试搜索的路径是“\\Dev4\ete\”,如错误消息中所示。

当我尝试在门户中运行以下查询时。它成功返回我的结果。

以前有人遇到过这个问题吗?可能的根本原因是什么?

【问题讨论】:

  • 在您的屏幕截图中,client.Nodes 是什么? Nodes 是包含 DocumentDB 查询结果的客户端列表吗?
  • 能否请您显示您执行的实际查询,该查询填充了实际执行查询的client.Nodes(client.CreateDocumentQuery)代码在哪里?)
  • 嗨瑞恩。该节点已成功写入 db。我可以使用上面显示的门户查询来搜索它。它只是在使用 api 时给我这个错误。我认为 '\' 以某种方式被识别为无效字符。这真的让我很恼火,以至于我真的需要在将路径保存到 db 之前将所有 '\' 更改为 '/' 以便我能够在稍后获取它们。

标签: azure azure-cosmosdb


【解决方案1】:

失败的原因是'\'是一个转义字符。

所以,当后端收到您的查询“SELECT * FROM c WHERE c.name =”\\Dev4\ete\”时,它会将其解释为 \Dev4\ete\,然后最后一个 \ 会导致问题,因为它是被视为文字转义字符,后面没有任何内容。

您应该使用另一个 '\' 来转义每次使用 '\',即 上面显示的示例查询将是

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

就像您在节点名称中包含文字 \n 一样,您需要转义 \n 的转义字符

【讨论】:

    猜你喜欢
    • 2012-04-26
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多