将MongoDB中的数据存储在Node.js中的Javascript对象中

时间:2016-11-21 01:29:06

标签: javascript node.js mongodb

我正在制作类似于炉石传说或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文件中是必需的。

非常感谢任何帮助!谢谢! :)

0 个答案:

没有答案