Как сохранить и извлечь сохраненные игры из базы данных для браузерной игры JavaScript? - PullRequest
0 голосов
/ 16 января 2019

Я немного озадачен.

У меня есть клиентская игра JS, созданная с использованием Phaser, в комплекте с приложением Nodejs / Express, которое запускает сервер и обслуживает файлы игры.Мое намерение состоит в том, чтобы позволить пользователю вводить имя пользователя и извлекать сохраненные данные из базы данных, предпочтительно на основе облачных вычислений (например, MongoDB Atlas), чтобы мне не пришлось хранить данные самостоятельно.

Однако из-за асинхронной природы Nodejs и JS я не могу найти способ получить данные сохранения (скорее всего, только данные JSON) из БД в свой код игры JS, чтобы я могманипулировать им и запустить приложение.Все примеры, которые я видел, используя AJAX для клиентского JS, просто отображали данные в HTML, когда я хочу использовать такие данные, как текстовая переменная или переменная JSON в JS.

Что я рассматриваюсейчас помещаю всю мою игру в функцию обратного вызова и передаю ответ от вызова AJAX приложению MongoDB Stitch.

Например:

const client = stitch.Stitch.initializeDefaultAppClient('appname');

const db = client.getServiceClient(stitch.RemoteMongoClient.factory, 'mongodb-atlas').db('GameDB');

client.auth.loginWithCredential(new stitch.AnonymousCredential()).then(user =>
    db.collection('GameSaves')
    .updateOne({owner_id:client.auth.user.id}, {$set:{number:42}}, {upsert:true})).then(() =>
        db.collection('GameSaves').find({owner_id: client.auth.user.id}, { limit: 100}).asArray()
    ).then(startGame) //passes the docs to startGame()
    .catch(err => {
        console.error(err)
    });

Но у меня есть ощущение, что победилне работает (в моих тестах NodeJS fetch () я просто получаю объекты Promise без возможности их анализа, даже в блоке ".then") или что есть гораздо лучший способ сделать это.

Я пытаюсь избежать использования localStore, чтобы пользователь мог запустить игру на компьютере, а затем на своем телефоне.

...