Azure 移动服务 Node.js 在读取查询期间更新列字段计数
Azure Mobile Services Node.js update column field count during read query
我想使用服务器端代码 (node.js) 更新 Azure 移动服务中特定行中的列。
我的想法是,每次用户从我的移动应用程序运行读取查询时,A 列(存储数字)的计数都会增加 1 (i++)。
拜托,我怎样才能通过 Azure 移动服务中的读取脚本完成该操作。
提前致谢,
查看 online reference 中的示例。在您正在跟踪的 table 的 table 阅读脚本中,您需要执行类似的操作。目前尚不清楚您是在跟踪用户正在阅读的同一 table 中,还是在单独的计数中 table,但流程是相同的。
请注意,如果您真的想跟踪这个,您应该将读取请求记录到另一个 table 并在事后对它们进行统计,或者使用外部分析系统(Google Analytics、Flurry、MixPanel 、Azure Mobile Engagement 等)。如果多部手机同时从 table 中读取,这种更新记录中单个计数字段的方法将不准确——它们将从跟踪 table 中读取相同的值 x,递增它,并用相同的值 x+1.
更新记录
function read(query, user, request) {
var myTable = tables.getTable('counting');
myTable.where({
tableName: 'verses'
}).read({
success: updateCount
});
function updateCount(results) {
if (results.length > 0) {
// tracking record was found. update and continue normal execution.
var trackingRecord = results[0];
trackingRecord.count = trackingRecord.count + 1;
myTable.update(trackingRecord, { success: function () {
request.execute();
});
} else {
console.log('error updating count');
request.respond(500, 'unable to update read count');
}
}
};
希望这对您有所帮助。
编辑:修复上面的函数签名和 table 名称,在下面添加另一个示例
如果您想跟踪阅读了哪些经文(如果您的应用程序可以一次请求一个)您需要执行 "counting" 请求并在 "verses" 请求之后更新,因为脚本不会预先告诉您用户请求的是哪一节经文记录。
function read(query, user, request) {
request.execute( { success: function(verseResults) {
request.respond();
if (verseResults.length === 1) {
var countTable = tables.getTable('counting');
countTable.where({
verseId: verseResults[0].id
}).read({
success: updateCount
});
function updateCount(results) {
if (results.length > 0) {
// tracking record was found. update and continue normal execution.
var trackingRecord = results[0];
trackingRecord.count = trackingRecord.count + 1;
countTable.update(trackingRecord);
} else {
console.log('error updating count');
}
}
}
});
};
另一个注意事项:确保您的计数 table 在您选择的列上有一个索引(table第一个示例中的名称,第二个示例中的 verseId)。
我想使用服务器端代码 (node.js) 更新 Azure 移动服务中特定行中的列。
我的想法是,每次用户从我的移动应用程序运行读取查询时,A 列(存储数字)的计数都会增加 1 (i++)。
拜托,我怎样才能通过 Azure 移动服务中的读取脚本完成该操作。
提前致谢,
查看 online reference 中的示例。在您正在跟踪的 table 的 table 阅读脚本中,您需要执行类似的操作。目前尚不清楚您是在跟踪用户正在阅读的同一 table 中,还是在单独的计数中 table,但流程是相同的。
请注意,如果您真的想跟踪这个,您应该将读取请求记录到另一个 table 并在事后对它们进行统计,或者使用外部分析系统(Google Analytics、Flurry、MixPanel 、Azure Mobile Engagement 等)。如果多部手机同时从 table 中读取,这种更新记录中单个计数字段的方法将不准确——它们将从跟踪 table 中读取相同的值 x,递增它,并用相同的值 x+1.
更新记录function read(query, user, request) {
var myTable = tables.getTable('counting');
myTable.where({
tableName: 'verses'
}).read({
success: updateCount
});
function updateCount(results) {
if (results.length > 0) {
// tracking record was found. update and continue normal execution.
var trackingRecord = results[0];
trackingRecord.count = trackingRecord.count + 1;
myTable.update(trackingRecord, { success: function () {
request.execute();
});
} else {
console.log('error updating count');
request.respond(500, 'unable to update read count');
}
}
};
希望这对您有所帮助。
编辑:修复上面的函数签名和 table 名称,在下面添加另一个示例
如果您想跟踪阅读了哪些经文(如果您的应用程序可以一次请求一个)您需要执行 "counting" 请求并在 "verses" 请求之后更新,因为脚本不会预先告诉您用户请求的是哪一节经文记录。
function read(query, user, request) {
request.execute( { success: function(verseResults) {
request.respond();
if (verseResults.length === 1) {
var countTable = tables.getTable('counting');
countTable.where({
verseId: verseResults[0].id
}).read({
success: updateCount
});
function updateCount(results) {
if (results.length > 0) {
// tracking record was found. update and continue normal execution.
var trackingRecord = results[0];
trackingRecord.count = trackingRecord.count + 1;
countTable.update(trackingRecord);
} else {
console.log('error updating count');
}
}
}
});
};
另一个注意事项:确保您的计数 table 在您选择的列上有一个索引(table第一个示例中的名称,第二个示例中的 verseId)。