Azure 表查询 api 本身不支持 startwith 运算符,但可以使用以下格式的查询字符串来构建它。下面的示例是尝试执行 rowKey.startWith('myrowkey') 操作。
?$filter=PartitionKey eq 'mykey' and RowKey ge 'myrowkey' and RowKey lt 'myrowkez'
为此,我正在编写一个getNextKey
返回字典下一个键的函数。该函数用于生成查询字符串。
{
_getStartWithQueryString: function getStartWithQueryString(partitionKey, rowKey)
{
var nextRowKey = this._getNextKey(rowKey);
var filterValue = "PartitionKey eq '" + partitionKey +
"' and RowKey ge '" + rowKey + "' and RowKey lt '" + nextRowKey + "'";
var parameters = {
'$filter' : filterValue,
};
var params = Utils.Http.stringifyParameters(parameters);
return params;
},
_getNextKey: function getNextKey(key)
{
var lastCharCode = key.charCodeAt(key.length - 1);
var nextLastCharCode = ++lastCharCode;
var result = key.substr(0, key.length - 1) + String.fromCharCode(nextLastCharCode);
return result;
},
queryAzureTable: function queryAzureTable(...)
{
var baseUrl = config.storageAccount.url;
var queryUrl = this._getStartWithQueryString('2013-05-28T07', '2511cc20-ecff-46d2-bc13-ec9cb9ca3498');
var resourceUri = 'mytable()' ;
var url = baseUrl + resourceUri + '?' + queryUrl;
// more code to invoke azure table query entities rest api
}
现在的问题是:RowKey 可以包含字母数字字符、“-”和“。”
我的测试结果如下所示:getNextKey('myrowkey') -> 'myrowkez'
getNextKey('00') -> '01'
getNextKey('09') -> '0:'
getNextKey('0-') -> '0.'
getNextKey()
您是否看到任何可能导致 azure 查询错误结果的正确性问题?