Я развивающийся эфемерное зашифрованное комнату в стеке MEAN и гадаю, как лучше структурировать этот кусок кода ...NodeJS/MongoDB Unique Value Check
Что я пытаюсь достичь:
- Запрос POST получен для создания чата.
- Производится случайная 8 символьная строка, которая станет идентификатором roomid (отдельно от mongo _id)
- Необходимо убедиться, что строка еще не существует в базе данных. Если это так, мне нужно запустить генератор и снова сохранить его.
У меня есть этот код, который, очевидно, не будет работать, потому что вызов в базу данных асинхронен и приведет к сбою потока.
var chatroom = new Chatroom();
var roomid = random.generate(8).toUpperCase();
var unique = false;
while (!unique) {
Chatroom.count({roomid: roomid}, function (error, data) {
if (data < 1) {
chatroom.roomid = roomid;
chatroom.roomtitle = request.body.roomtitle;
chatroom.passphrase = request.body.passphrase;
unique = true;
}
});
}
chatroom.save(function (error) {
if (error) {
response.json(apiResponse('fail', error));
}
else {
response.json(apiResponse('success', chatroom));
}
});
Любые предложения о том, как лучше структурировать этот код?
Согласен. Я думаю, что есть лучший способ, но я тоже этого не помню. – Rodmentou
Спасибо, Джонатан. Должен был подумать о рекурсивном варианте раньше :(Все работает сейчас. Cheers. – Seonixx
Я бы использовал приращение, скорее, искал случайное число. – webduvet