0
Azure表查詢API本身並不具有啓動運算符支持,但它可以通過使用以下格式的查詢字符串構建。下面的例子試圖做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()
任何正確性問題,從而可能導致對蔚藍的查詢錯誤的結果?