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