Я пытаюсь создать js браузерную игру с помощью Phaser, и я постоянно изучаю Nodejs, Expressjs и MongoDB, чтобы обслуживать ее. Я новичок в таких концепциях Nodejs, как async и тому подобное. Пока у меня есть сервер Node w / Express, выводящий HTML-файл, который вызывает мою игру, которая находится в JS-файле. Я смог общаться из моей игры с Nodejs, используя вызовы fetch и app.get для выполнения действий на Nodejs (например, отправлять сообщения Twilio)
Пример, просто чтобы убедиться, что я правильно понял:
в моей статической игре. Js ~
function sendSMS() {
var url = 'http://localhost:6000/index';
fetch(url).then(function(res) {
console.log(res.text()); //just some confirmation message, outputs as a Promise
});
}
И в моем Node index.js ~
app.get('/index', function (req, res) {
var text = 'YOU FLUSHED THE TOILET'; \\for the game
const accountSid = process.env.TWILIO_ACCOUNT_SID;
const authToken = process.env.TWILIO_AUTH_TOKEN;
const client = require('twilio')(accountSid, authToken);
client.messages
.create({
body: text,
from: process.env.FROM_NUMBER,
to: process.env.TO_NUMBER
})
.then(message => console.log(message.sid))
.done();
res.send("USER HAS BEEN NOTIFIED THAT THEY FLUSHED THE TOILET");
})
Моя html-страница со ссылкой на game.js подается из моего Node index.js, когда пользователь подключается с помощью этого метода:
app.get('/', function (req, res) {
res.sendFile(path.join(__dirname,'index.html'));
});
Это прекрасно работает, но в моем тестировании я заметил, что не могу отправить данные с моего Node-сервера в файл клиента js, так как Nodejs является асинхронным.
Я хочу сохранить сохраненные пользовательские данные в БД Mongo, которая будет загружаться при каждом запуске для каждого конкретного пользователя. Желательно, чтобы я использовал эти данные в game.js для манипуляции.
Итак, мой вопрос: как мне получить данные из MongoDB в мой game.js? Или есть поток проектирования, на который я должен перейти, чтобы сделать это лучше?
(Также дайте мне знать, если моя схема именования файлов тупая и / или как ее улучшить)