【发布时间】: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