我的系统每小时会创建大约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;