Я настроил веб-приложение, которое выдает участникам случайное число, однако два человека не должны получать одно и то же число. Они вводят свое имя на веб-сайте и нажимают кнопку «ОК», чтобы получить их номер. Все эти данные (имя и случайно сгенерированное число, которые я генерирую с помощью уникального случайного модуля) отправляются в базу данных 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]
});
});
});
}
Если код обнаруживает столкновение с базой данных, он должен перезапустить l oop и получить новый номер. Я новичок в JavaScript и вообще пишу код, я пытаюсь набрать asp все, но у меня просто недостаточно знаний, чтобы придумывать решения :( Я пытался заставить его работать целый день, но я ' м просто вне идей.