我正在制作类似于炉石传说或Magick the Gathering的交易卡游戏。
在MongoDB中,我存储了我的卡数据。每张独特的卡都有名字,攻击,健康和费用。
在服务器上运行应用程序后,我想连接到数据库,读入所有卡数据并将其存储在UniqueCard对象数组中。该数组在我的UniqueCard类中声明为静态变量,因此可以使用UniqueCard.uniqueCards
访问它。
我遇到的问题是,一旦我连接到数据库并填充了我唯一的卡阵列,一旦我关闭连接,它似乎不会持续存在。
显然,我误解了我在javascript中使用MongoClient的方式,但我不确定是什么。
这是我的 app.js
/** app.js **/
var express = require('express');
var app = express();
var server = require('http').Server(app);
var MongoClient = require('mongodb').MongoClient;
// Import Game Controller
GameController = require('./server/js/Controllers/GameController');
app.get('/', function (req, res) {
res.sendFile(__dirname + '/client/index.html');
});
app.use('/client', express.static(__dirname + '/client'));
server.listen(80);
// Database Connection
MongoClient.connect('mongodb://localhost:27017/cards', function (err, db) {
if (err) {
console.log("Failed to connect to database.", err);
} else {
db.collection('cards').find().toArray(function (err, result) {
if (err) {
console.log("No documents found.");
} else {
result.forEach(function (data) {
UniqueCard.uniqueCards.push(new UniqueCard(data));
});
console.log(UniqueCard.uniqueCards); //This prints my data.
db.close();
}
});
}
});
console.log(UniqueCard.uniqueCards); //This prints an empty array but why??
var gameController = new GameController();
gameController.startMatch();
这是 UniqueCard.js :
/** UniqueCard.js **/
/* Constructor */
var UniqueCard = function (data) {
this.name = data.name;
this.attack = data.attack;
this.health = data.health;
this.cost = data.cost;
};
/* Static Variables */
UniqueCard.uniqueCards = [];
module.exports = UniqueCard;
我的UniqueCard模块包含在我的app.js中,因为它在我的GameController.js文件中是必需的。
非常感谢任何帮助!谢谢! :)