バックエンドとして Azure Mobile Services を使用しているモバイル アプリがあります。クライアントがデータベースから要求している要素を変更する必要があるシナリオがあります。要求されているレコードのランクとパーセンタイルを、その最高スコアとテーブル内の他のすべてのレコードの最高スコアに基づいて計算する必要があります。ここの例に従って、以下のスクリプトを作成しました。
function read(query, user, request) {
request.execute({
success: function(results) {
results.forEach(function(item) {
var totalsql = "SELECT COUNT(*) FROM scoreInfo";
mssql.query(totalsql, {
success: function(totalresults) {
var totalCount = totalresults[0].Column0;
var moresql = "SELECT COUNT(*) FROM scoreInfo WHERE bestscore > ?";
mssql.query(moresql, [item.bestscore], {
success: function(moreresults) {
var moreBestCount = moreresults[0].Column0;
item.bestrank = moreBestCount + 1;
item.bestpercentile = 100 - moreBestCount*100/(totalCount+1);
}
});
}
});
});
request.respond();
}
});
}
しかし、クライアント側で期待どおりの結果が得られません。サーバー側で結果をログに記録しようとしましたが、クライアント側で表示される内容はログに記録された内容と一致しません。私は何を間違っていますか?