2014-05-12 85 views
0

好吧,所以我試圖使用Windows Azure Table Service和節點來提取數據。Windows Azure和JavaScript多個子句條款

數據在那裏,很好,我想要它,我唯一的問題是與多個where子句,我不知道或無法找到熱文件在JavaScript中做它們。我沒有使用C#,因此我能找到的大多數文檔都沒有用。

我已經猜到了幾件事情,但沒有工作......

function setCountryResultsWithAge(country, minAge, maxAge) { 
    var query = azure.TableQuery 
    .select() 
    .from('dwadatastorage') 
    .where('PartitionKey eq ? ' + country + ' and Age ge ? ' + minAge + ' and Age le ? ' + maxAge); 
    //I've also tried this 
    //and 
    // .where('Age ge ?', minAge) 
    //.and 
    // .where('Age le ?', maxAge); 
    //I've tried this as well 
    // .where('Age ge ?', minAge) 
    // .where('Age le ?', maxAge); 
    tableService.queryEntities(query, function(error, entities){ 
    if(!error){ 
     var countryMusicians = []; 
     for(var i in entities){ 
     //console.log(entities[i]); 
     countryMusicians.push([entities[i].Artist, entities[i].TotalPlays,  entities[i].Age]); 
     } 
     console.log(countryMusicians); 
     distributeCountryArtists(country, countryMusicians); 
    } 
    }); 
    console.log("Finished with age query maybe"); 
} 

如果有人知道更多,請幫助

的JavaScript才真正。

應該只是一個小的語法變化,但它不是什麼我知道所有

回答

1

如果年齡存儲爲一個號碼,請確保您用數字查詢像這樣:

var query = azure.TableQuery 
    .select() 
    .from('dwadatastorage') 
    .where('PartitionKey eq ? ', country) 
    .and('Age ge ? ', parseInt(minAge)) 
    .and('Age le ? ', parseInt(maxAge)); 
+0

的JavaScript把它作爲一個int,只是當Azure的決定使用它,它一定是忘了。 謝謝 – WebTim

0

試試這個:

var query = azure.TableQuery 
    .select() 
    .from('dwadatastorage') 
    .where('PartitionKey eq ?', country) 
    .and('Age ge ?', minAge) 
    .and('Age le ?', maxAge); 

您問號應作爲查詢的佔位符。在您的原始代碼中,由於您沒有提供函數調用的第二個參數,因此它們會被字面解釋。

.where('PartitionKey eq ' + country + ' and Age ge ' + minAge + ' and Age le ' + maxAge); 

我相信也可以,但不推薦。