如何检索 Azure 移动服务表的行位置
How retrieve row position for azure mobile services tables
我将 Azure 移动服务(在 HTML 客户端中)用于一个简单的 Score Wall 应用程序。
首先该应用获得前 100 名分数
client.getTable("ScoreWall").orderBy("score").take(100).read().then(...
稍后显示当前用户位置
client.getTable("ScoreWall").where({"userId":uid}).select("userId","score").read().then(...
但我想检索当前用户在世界排名中的位置。我没有找到 select 的任何文档,例如:
select("row_position","userId","score")
如何检索这些数据?
想不出在查询中完成这一切的好方法,但给定一个只有 100 的数据集,对进行一些 post 处理没有任何重大影响。这是我做的(我在 js 后端得到它,因为我有一个可以尝试)。
function returnAll(req, res) {
var todoTable = req.service.tables.getTable('todoitem');
var n = 1;
var q = todoTable.select(function () {
var obj = { num: n, text: this.text };
n++;
return obj;
}).orderBy("text").take(100);
q.read({
success: function (results) {
var Sarah = {};
results.forEach(function (item) { if (item.text === "Sarah") { Sarah = item } });
res.send(200, { "results": results, "sarah": Sarah });
},
error: function (err) {
res.send(500, err);
}
});
}
显然,这是一个愚蠢的演示,但它明白了要点。结果如下:
{
"results": [
{
"num": 1,
"text": "Angela"
},
{
"num": 2,
"text": "Chris"
},
{
"num": 3,
"text": "John"
},
{
"num": 4,
"text": "Nikesh"
},
{
"num": 5,
"text": "Sarah"
}
],
"sarah": {
"num": 5,
"text": "Sarah"
}
}
在我的示例中,如果您要将其扩展到数百万行,则有几件事需要注意(但我可能会使用单独的作业来计算前 100 名并将其转储到 table 或定期标记具有排名的用户对象以解决该比例),但对于 100,它是体面的。
我将 Azure 移动服务(在 HTML 客户端中)用于一个简单的 Score Wall 应用程序。
首先该应用获得前 100 名分数
client.getTable("ScoreWall").orderBy("score").take(100).read().then(...
稍后显示当前用户位置
client.getTable("ScoreWall").where({"userId":uid}).select("userId","score").read().then(...
但我想检索当前用户在世界排名中的位置。我没有找到 select 的任何文档,例如:
select("row_position","userId","score")
如何检索这些数据?
想不出在查询中完成这一切的好方法,但给定一个只有 100 的数据集,对进行一些 post 处理没有任何重大影响。这是我做的(我在 js 后端得到它,因为我有一个可以尝试)。
function returnAll(req, res) {
var todoTable = req.service.tables.getTable('todoitem');
var n = 1;
var q = todoTable.select(function () {
var obj = { num: n, text: this.text };
n++;
return obj;
}).orderBy("text").take(100);
q.read({
success: function (results) {
var Sarah = {};
results.forEach(function (item) { if (item.text === "Sarah") { Sarah = item } });
res.send(200, { "results": results, "sarah": Sarah });
},
error: function (err) {
res.send(500, err);
}
});
}
显然,这是一个愚蠢的演示,但它明白了要点。结果如下:
{
"results": [
{
"num": 1,
"text": "Angela"
},
{
"num": 2,
"text": "Chris"
},
{
"num": 3,
"text": "John"
},
{
"num": 4,
"text": "Nikesh"
},
{
"num": 5,
"text": "Sarah"
}
],
"sarah": {
"num": 5,
"text": "Sarah"
}
}
在我的示例中,如果您要将其扩展到数百万行,则有几件事需要注意(但我可能会使用单独的作业来计算前 100 名并将其转储到 table 或定期标记具有排名的用户对象以解决该比例),但对于 100,它是体面的。