我尝试制作服务器逻辑脚本。我不知道js,所以我尝试了。 我的表名是播放器。
id Guid NamePlayer Score
1 b91518c3-759d-45ef-9ee0-5d7584d96924 user 0
2 e65661f5-88bf-467c-b850-290ec3f1e07d empty 0
3 5636dde3-9ec3-47e4-92df-0295b16d4c70 empty 0
4 7e1e6c9b-adcc-4fbd-92d5-ac8fb0f75177 empty 0
5 7b5f6e4b-696d-4aea-93e0-1cc6309046a5 empty 0
6 40c80b1c-89f3-4628-bf11-eeb954902d33 emptydd 0
7 c9024cbb-760b-49ce-917a-cc7d607e9290 empty 0
8 36f553ce-1ab4-4b9c-b693-10df8f795e0a emptymm 0
这是我的逻辑。
function insert(item, user, request) {
var players = tables.getTable('player');
for (var index = 0; index < players.length; index++) {
if(players[index].NamePlayer===item.NamePlayer){
console.log('One user have this name');
}else {
request.execute();
}
}
}
我如何解决?
答案 0 :(得分:2)
您在调用table
时返回的tables.getTable('player')
对象不是包含所有项目的数组;相反,它是一个可以查询数据库的对象 - 有关更多信息,请参阅http://msdn.microsoft.com/en-us/library/windowsazure/jj554210.aspx。
你需要做的是首先查询表中的对象,然后在回调中(记住在服务器端,所有对数据库的调用都是异步的)响应,如下面的代码所示:
function insert(item, user, request) {
var playersTable = tables.getTable('player');
playersTable.where({ NamePlayer: item.NamePlayer }).read({
success: function(results) {
if (results.length > 0) {
request.respond(
statusCodes.BAD_REQUEST,
{ error: 'A user already has this name' });
} else {
// Unique user, execute the insert
request.execute();
}
}
});
}