我已经建立了一个Web应用程序,为参与者提供一个随机数字,但是,两个人一定不能获得相同的数字。他们在网站上输入自己的姓名,然后单击“确定”按钮以获取其号码。所有这些数据(我使用唯一的随机模块生成的名称和随机生成的数字)都发送到MySQL数据库,并存储在那里供以后使用-我必须查看谁得到了哪个数字。
问题是,在将新的随机数和人员姓名一起发送到数据库之前,我找不到一种方法来检查数据库中已经存在的所有数字以检查新生成的数字是否已经存在。
简而言之,我想在插入新随机数之前检查与数据库的冲突,该随机数对于每一行都必须是唯一的,总共可以有100个数字(1-100)。如果代码遇到冲突,则应生成一个新的编号,然后再次检查是否存在冲突。
我基本上是模拟每个人都戴着帽子绘制一个唯一数字的人。
这是我的JavaScript代码在node.js中运行:
// Unique random number generator module
const uniqueRandom = require('unique-random');
// Extracts an array of objects from SQL database and transforms it into a normal array with vallues (numbers)
var sqlNumberArray = []; //this array stores all numbers from SQL database
con.query("SELECT number FROM person", function test(err, result, fields) {
if (err) {
throw err;
} else {
result.map(function(obj) {
setValue(obj.number);
});
}
});
function setValue(value) {
sqlNumberArray = value;
console.log(sqlNumberArray);
};
// Checks if the random number is unique by comparing uniqueRandom to SQL entries
var numberWasChecked = ""
let random = uniqueRandom(1, 100);
var match = false;
for (var i = 0; i < sqlNumberArray.length && !match; i++) {
if (sqlNumberArray[i] == random) {
match = true;
}
}
if (match) {
window.alert("Please reload the page and try again, there was an error assigning you a number");
console.log("Random made a duplicate number... Oops!")
} else {
app.post('/createEntry', urlencodedParser, function(req, res, ) { //This code sends data to SQL
let values = [String(req.body.name), String(random())];
console.log(String(values));
var insert = "INSERT INTO person (name, number) VALUES (?)"
con.query(insert, [values], function(err, result) {
if (err) throw err;
console.log("A new value was inserted into database. Value input: " + values);
res.render(path.join(__dirname + '/numberServe'), {
number: values[1]
});
});
});
}
如果代码与数据库发生冲突,它应该重新启动循环并获取一个新的数字。我是JavaScript和编码的新手,我尝试掌握所有内容,但我只是没有足够的知识来思考解决方案:(我试图使它工作一整天,但我没有想法。
我已经建立了一个Web应用程序,为参与者提供一个随机数字,但是,两个人一定不能获得相同的数字。他们在网站上输入自己的姓名,然后单击“确定”按钮以获取其号码。 ...
提前选择确定现有号码要根据比赛条件而定。