NodeJS Mongoose不保存数据

时间:2016-01-07 16:55:44

标签: node.js mongodb mongoose odm mongoose-schema

我的系统每小时会创建大约30个集合。我的服务器获得了数小时的请求。我有大数据和多个集合。我使用MongoDB-NodeJS来保存数据。

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

第一个集合创建MongoDB并将数据保存到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;




0 个答案:

没有答案