Azure Table 存储:将 C# 转换为 NodeJS - 如何使用 CompareTo?

Azure Table Storage: Translate C# to NodeJS - How to use CompareTo?

互联网上流传着很多关于如何将 CompareTo 与 Azure 结合使用的示例 Table 存储基本上可以从 C# 中进行一些子字符串搜索 ,但我找不到任何说明如何在 NodeJS 中执行此操作的内容,而且我尝试将所有语法放在一起只是抛出各种语法或无效查询存储异常。

任何人都可以告诉我如何从 NodeJS 中执行与本网站上的 C# 示例等效的操作吗? https://lifeportal.azurewebsites.net/azure-table-storage-searching-entities-using-query-like-substring-or-left/

string projectIdString = projectId.ToString().ToLower(); // projectId - Guid
string startQuery = projectIdString + "_"; // Our separate symbol
string endQuery = projectIdString + "`"; // Next symbol in ASCII table after "_"

Expression<Func<DynamicTableEntity, bool>> filters = (e.RowKey.CompareTo(startQuery) >= 0 && e.RowKey.CompareTo(endQuery) < 0);
CloudTable table = _storageContext.Table(Tables.Users);

bool result = await DeleteAllEntitiesInBatches(table, filters);
return result;

最明显的是:

const TABLE_NAME = 'MYTABLE';

var azure = require('azure-storage');
var tableService = azure.createTableService();
var query = new azure.TableQuery()
    .where('PartitionKey eq ?', 'MYKEY').and('RowKey.compareTo(\'1-\') ge ?', 0);

tableService.queryEntities(TABLE_NAME, query, null, function(error, result, response) {
    if (!error) {
        // result.entries contains entities matching the query
    }
});

结果:

"An unknown function with name 'RowKey.compareTo' was found. This may also be a key lookup on a navigation property, which is not allowed."

您似乎在尝试使用 StartsWith 查询 RowKey。在 node.js 中,您可以使用运算符 ge(大于或等于)来做到这一点。

所以你的代码应该是这样的:

var query = new azure.TableQuery()
    .where('PartitionKey eq ?', 'MYKEY').and('RowKey ge ?', '<starts with substring>');