【问题标题】:`endsWith` and `startsWith` for Azure Table StorageAzure 表存储的 `endsWith` 和 `startsWith`
【发布时间】:2018-04-08 15:53:23
【问题描述】:

我通过 Node.js 在 CosmosDB 上使用 Azure 表存储。我想出了一个使用大于和小于来提供startsWith 功能的技巧。

另一方面,我仍然需要endsWith 功能,但找不到让它工作的方法。这可能是我必须拉入所有分区或行键然后自己进行字符串搜索的情况之一。

我注意到 Azure Table 具有与 odata 相同的查询格式,并且在此文档中为 $filter 列出了一个 endsWith 命令:https://docs.microsoft.com/en-us/previous-versions/dynamicsnav-2016/hh169248(v=nav.90)

是否有可用的endsWith 命令,或者是否有办法查询所有分区或行键并自己进行搜索?

【问题讨论】:

  • 要仅选择 PrimaryKey 和 RowKeys,请使用:new TableQuery().select('PartitionKey', 'RowKey')

标签: node.js azure azure-cosmosdb azure-table-storage


【解决方案1】:

是否有可用的 endsWith 命令,或者有没有办法 查询所有分区或行键并自己进行搜索?

很遗憾,startsWithendsWith 命令在 Azure 表存储中均不可用。对于startsWith,我猜您实施了类似于此处概述的解决方案的黑客攻击:Can PartitionKey be queried with StartsWith?

但是endsWith 没有这样的 hack。不过,一种可能性是存储另一个实体,在其中反转PartitionKey(或RowKey),然后应用startsWith hack。例如,您的PartitionKeyabcdef,您需要找到以ef 结尾的实体,您可以将另一个带有PartitionKey 的实体存储为fedcba,然后使用fe 应用startsWith hack(再次反转您正在搜索的字符串)。

【讨论】:

  • 我明白你在说什么。是的,这不是我想要处理的事情。我将只查询它们的整个列表。反正不会超过100个左右。 JavaScript 处理起来并不费力。
  • 对于 100 个实体,是的,该解决方案是多余的。您只能在客户端进行此过滤。
猜你喜欢
  • 2010-10-24
  • 2021-01-07
  • 1970-01-01
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多