Итак, я пытаюсь создать базу данных, пару фрагментов функций, которые читают, пишут или создают файлы X.json. То, как я себе это представлял, - это папка БД, затем в этой папке куча папок с именами пользователей и там, куча файлов, таких как account.json, level.json и т. Д. Таким образом, каждая папка будет содержать пользователей данные, это код, который мне удалось написать до сих пор, и он работает.
Но проблема в документах FS гласит, что использование fs.stat для проверки существования файла перед чтением / записью в него - плохая идея. Я не понимаю, почему, так как это кажется единственным способом сделать это, прежде чем я продолжу задавать вопросы, я хотел бы вставить свой код здесь:
socket.on('play', (data) => {
fs.stat(`db/${data.username}/account.json`, (error, result) => {
if(!error) {
fs.readFile(`db/${data.username}/account.json`, (error, result) => {
if(error) {
throw error;
} else {
const rawResult = JSON.parse(result);
if(data.password == rawResult.password) {
socket.emit('playResponse', {
success: true,
msg: 'Login Succesfull'
});
} else {
socket.emit('playResponse', {
success: false,
msg: 'Wrong Password!'
});
}
}
});
} else if(error.code == 'ENOENT') {
socket.emit('playResponse', {
success: false,
msg: 'Account not found'
});
}
});
});
Я не написал общую функцию, которая бы делала это для меня, потому что я понял, что приведенный выше код сейчас беспорядок. Итак, почему плохая практика проверять наличие файла (fs.stat) перед записью / чтением из них? Думаю, я мог бы что-то сделать с ошибкой, которую я получаю из функции readFile, и пропустить функцию fs.stat
, но всякий раз, когда функция readFile встречает несуществующую папку, мой сервер просто падает.
Я не очень разбираюсь в Node, поэтому приведенный выше код, вероятно, является абсолютной чепухой. Вот почему я здесь!
Как я могу сделать так, чтобы мой сервер не падал, если readFile встречается с несуществующей папкой, а вместо этого просто генерирует «Account not Found» через socket.io? Если я добавлю этот код emit, мой сервер все равно выйдет из строя.
Я бы просто пошел с MongoDB или еще чем-нибудь, но у меня есть куча свободного времени, и делать такие вещи очень весело для меня. > Является ли использование БД, подобной монго, более безопасным, или люди делают это, чтобы им не пришлось тратить время на написание своей собственной БД?
Спасибо за вашу помощь!