【问题标题】:How to use MongoDB/Nodejs with Express to retrieve save data for a JavaScript-based game?如何使用 MongoDB/Nodejs 和 Express 来检索基于 JavaScript 的游戏的保存数据?
【发布时间】:2019-06-09 05:10:21
【问题描述】:

我正在尝试使用 Phaser 构建一个 js 浏览器游戏,并且我一直在学习 Nodejs、Expressjs 和 MongoDB 来提供它。我是 Nodejs 概念的新手,例如异步等。到目前为止,我的 Node w/Express 服务器输出了一个 HTML 文件,该文件调用了我在 JS 文件中的游戏。我已经能够使用 fetch 和 app.get 调用在 Nodejs 上执行操作(例如发送 Twilio 消息)从我的游戏与 Nodejs 进行通信

一个例子,只是为了确保我得到正确的流程:

在我的静态game.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
    }); 
}

在我的节点 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");
})

当用户通过此方法连接时,我的带有 game.js 引用的 html 网页由我的 Node index.js 提供:

app.get('/', function (req, res) {
    res.sendFile(path.join(__dirname,'index.html'));
});

这很好用,但在我的测试中,我注意到我无法将数据从我的 Node 服务器发送到 js 客户端文件,因为 Nodejs 是异步的。

我想将保存的用户数据存储在 Mongo DB 中,以便在每次启动时为每个特定用户加载。我最好将这些数据放入 game.js 中进行操作。

所以我的问题是,我应该如何将数据从 MongoDB 获取到我的 game.js 中?或者是否有我应该切换到的设计流程以使其变得更好?

(如果我的文件命名架构是愚蠢的和/或如何改进,请告诉我)

【问题讨论】:

    标签: javascript node.js mongodb express phaser-framework


    【解决方案1】:

    首先,我强烈建议您在开始之前观看一些 NodeJS 教程。

    我真的很喜欢这个关于 nodejs 的教程 https://www.youtube.com/watch?v=0oXYLzuucwE&list=PL55RiY5tL51q4D-B63KBnygU6opNPFk_q

    现在“Nodejs 是异步的”这句话很宽泛地描述了节点是如何异步工作的。 NodeJS 以异步方式与数据库交互。这是节点的最大好处之一。尤其是当您扩展到每秒有 100,000 个请求并且从数据库中选择成为您的瓶颈时。 通过使该操作异步,您的服务器可以继续处理其他请求,并且仅在 DB 完成选择数据时才返回处理先前的请求。

    除了你的服务器看起来很棒之外,它应该将 index.html 作为 root 传递,但除此之外不需要发送任何 html 页面。数据应以 JSON 格式传递(尽管您可以使用 XML 等其他格式或仅传递字符串),并应在正文中返回带有相关数据的 httpResponse。

    您的客户端应该负责向服务器发出 http 请求,使用 java 脚本(jquery 和 ajax)以获取该数据。

    最后一件事,您的客户端将拥有大量 java 脚本代码,这些代码将随着您的游戏发展而生成页面。我会推荐使用 angular/ReactJS/VueJS 作为框架来管理你的客户端。

    要吞下很多东西,至少一开始对我来说是这样,但是那里有很多非常好的指南。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-06
      • 1970-01-01
      • 2017-05-12
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 1970-01-01
      相关资源
      最近更新 更多