我正在开发一个 phonegap 应用程序,它在某个 super 用户下添加了 20 个用户。由于一个 super 用户下只有20个id可用,我在id字段中使用了自动递增。现在我得到以下场景 -
1) User1 输入他的 id 为 1
2) 用户 1 然后将他的 ID 编辑为 4,因为他喜欢这个数字
3) User2注册,默认人数为5
4) User2 修改他的 id 为 20
这就是我的问题所在,我如何重新检查和分配已分配的号码,然后再编辑。如您所见,在上述情况下,1-4 和 4-20 的数字将未被使用。
以下是我到目前为止所做的代码-
var db = window.sqlitePlugin.openDatabase("Database", "1.0", "Application", -1);
var Id = window.localStorage["user_id"];
var Number = '';
db.transaction(function(txaf) {
db.transaction(function(tx) {
//store data for local storage
//var Number = GenerateRandom();
//var Number;
tx.executeSql(
"SELECT id,number FROM range WHERE superuser_id = '" +
SuperuserId + "' ORDER BY id ASC Limit 1 ;", [],
function(tx, result) {
//if user id found then just update data for that user
//alert(result.rows.item(0).id);
Number = result.rows.item(0).number;
var UpdateId = result.rows.item(0).id;
var Data = JSON.parse(window.localStorage[
"data"]);
Data.number = Number;
var DataJson = JSON.stringify(Data);
window.localStorage["data"] = DataJson;
tx.executeSql(
"UPDATE range SET is_used = '1' WHERE id = '" +
UpdateId + "'", '', function(tx,
resUpdate) {}, function(e) {
//console.log("ERROR at update: " + e.message);
});
});
}, function(e) {
//console.log("ERROR: " + e.message);
});
最佳答案
ID 应该是唯一的。这意味着如果用户更改了他的 ID,则需要重新排列 20 个 ID,从而更改其他用户的首选 ID。可能的出路:
1 不要用autoincrement,id自己记账。向用户提供可用 ID 的选择,并让他们从此列表中进行选择。
2 使用帮助表(或使用用户表中的字段)将用户首选 ID 映射到自动生成的 ID。
关于javascript - 手动设置和检查 id 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27310861/