我有点困惑。
我有一个使用Phaser构建的客户端JS游戏,该游戏与运行服务器并提供游戏文件的Nodejs / Express应用捆绑在一起。我的意图是允许用户键入用户名并从数据库(最好是基于云的数据库(例如MongoDB Atlas))中检索保存的数据,因此我不必自己存储数据。
但是,由于Nodejs和JS的异步特性,我无法找到一种方法将数据库中的保存数据(可能只是JSON数据)获取到我的JS游戏代码中,因此我可以对其进行操作并运行该应用程序。当我想在JS中使用文本var或JSON变量之类的数据时,我在基于客户端的JS中使用AJAX看到的所有示例都只是用HTML呈现了数据。
我现在正在考虑的是将整个游戏置于回调函数中,并将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,以便让用户先在计算机上然后在手机上拉起游戏。