1

我的系统每小时会创建大约 30 个集合。我的服务器在一小时内收到数千个请求。我有大数据和多个集合。我使用 MongoDB-NodeJS 来保存数据。

paritemodel.js 中 pariteModel 类的 modelControl 函数 -如下代码- 我确实检查此模式是否是之前创建的。我将创建架构或使用创建的架构。

第一个集合创建和保存数据到 MongoDB。但是当创建另一个集合时它没有做。例如:

EURJPY_20160107_ 16集合已创建,但 EURJPY_20160107_ 17集合未创建。我在 modelparite.js检查了 mongoose.models,创建了 EURJPY_20160107_17,但从EURJPY_20160107_17 创建的实例未保存到数据库。

我的服务器文件是这样的:

app.js文件是我的引导文件:

var http = require('http'),
dispatcher = require('httpdispatcher');

require('./mongo.js');

function handleRequest(request, response){
    try {
        dispatcher.dispatch(request, response);
    } catch(err) {
        console.log(err);
    }
}

var server = http.createServer(handleRequest);

server.listen(3663, function(){
        console.log('listening the port: ' + 3663);
});

这是我在 app.js 中调用的 mongo.js 此文件用于将数据保存到 mongodb:

var dispatcher = require('httpdispatcher'),
url = require('url'),
moment = require('moment'),
md = moment().format("YYYYMMDD_HH"),
myModel = require('./modelparite.js');

dispatcher.onGet('/mongo', function(req, res){

        var url_parts = url.parse(req.url, true);
        // This is collection name. Output like this: USDTRY_20160107_16
        var colName = url_parts.query.symbol + '_' + md;

        var tarih = new Date();

        var pariteModel = myModel.returnModel(colName);
        var yeniParite = new pariteModel({
                symbol: url_parts.query.symbol,
                bid: url_parts.query.bid,
                ask: url_parts.query.ask,
                timeup: moment(tarih).format("YYYY-MM-DD HH:mm:ss")
        });

        yeniParite.save(function (err, data) {
                if (err) console.log(err);
                console.dir(data,true);
        });

        res.writeHead(200, {'Content-Type': 'text/html'});
        res.end();
});

这是我在 mongo.js 中调用的模型modelparite.js文件。此文件用于使用 Mongoose 创建模式:

    var mongoose = require('mongoose'),
    helper = require('./helper.js');
    require('mongoose-double')(mongoose);

    mongoose.connect('mongodb://localhost:27017/forex');

    var pariteModel = {

            pariteSchema: "",

            initSchema: function(){

                    var Schema = mongoose.Schema;
                    this.pariteSchema = new Schema({
                            symbol: String,
                            bid: mongoose.Schema.Types.Double,
                            ask: mongoose.Schema.Types.Double,
                            timeup: Date
                    });
            },

            modelControl: function(modelName){
                    if(mongoose.models[modelName]){
                            return true;
                    }
                    return false;
            },

            returnModel: function(modelName){

                    modelName = helper.whichParity(modelName);
                    //console.log(modelName);

                    if(this.modelControl(modelName)){
                            //console.log(mongoose.model(modelName));
                            return mongoose.model(modelName);
                    }else{
                            this.initSchema();
                            return mongoose.model(modelName, this.pariteSchema);
                    }
            },
    }

    module.exports = pariteModel;

4

0 回答 0