/** * Created by Tony on 2017/2/20. */ var mongoose = require('mongoose'); var demodb = require('../db/demodb'); var async = require('async'); //var Schema = demodb.mongoose.Schema; var Schema = mongoose.Schema; var calSchema = new Schema({ "ID": Number, "cal_type": Number, "value": Number, "test_result": Number }); calSchema.statics.findAndModify = function (query, sort, doc, options, callback) { return this.collection.findAndModify(query, sort, doc, options, callback); }; //var BillsData = demodb.mongoose.model("bills", BillsSchema); var calsMdl = demodb.mongoose.model("demo_cals", calSchema); var CalDataDAO = function(){}; CalDataDAO.prototype.get = function(id, callback){ calsMdl.find({ID: id}, function(err, templates){ if(templates.length){ callback(false, templates[0]); } else{ callback('No result found!'); } }) } CalDataDAO.prototype.testCalculate = function(userid, callback) { var startIdx = 1, endIdx = 100000, cnt = 1; var testRst = 0; var dt1 = new Date(), dt2 = null; console.log('start time: ' + dt1); demodb.mongoose.collections.demo_cals.find({"ID": {$gte: startIdx, $lte: endIdx}}).forEach( function(obj) { if(obj.cal_type){ //*/ if(obj.cal_type == 1) { //obj.test_result = obj.value * 1.1; testRst = obj.value * 1.1; } else if(obj.cal_type == 2) { //obj.test_result = obj.value * 1.2; testRst = obj.value * 1.2; } else { //obj.test_result = obj.value + 1; testRst = obj.value + 1; } /*/ testRst = 0; //obj.test_result = 0; //*/ } //demodb.mongoose.collections.demo_cals.save(obj); demodb.mongoose.collections.demo_cals.update({_id: obj._id}, {$set: {test_result: testRst} } ); cnt++; if (cnt > endIdx) { dt2 = new Date(); console.log('finished time: ' + dt2); } }); callback(false, "calculate OK!"); } CalDataDAO.prototype.testCalculate2 = function(userid, callback) { var startIdx = 1, endIdx = 100000, cnt = 1; var testRst = 0; async.waterfall([ function (cb) { var dt1 = new Date(); console.log('start time: ' + dt1 ); cb(null, dt1); }, function (dt1, cb) { calsMdl.find({"ID": {$gte: startIdx, $lte: endIdx}}, function(err, data){ var len = data.length; var cnt = 0; if(len){ //callback(false, templates[0]); for (var i = 0; i < len; i++) { //*/ if(data[i].cal_type == 1) { //data[i].test_result = data[i].value * 1.1; testRst = data[i].value * 1.1; } else if(data[i].cal_type == 2) { //data[i].test_result = data[i].value * 1.2; testRst = data[i].value * 1.2; } else { //data[i].test_result = data[i].value + 1; testRst = data[i].value + 1; } /*/ testRst = 0; //*/ //demodb.mongoose.collections.demo_cals.update({_id: obj._id}, {$set: {test_result: testRst} } ); calsMdl.update({_id: data[i]._id}, {$set: {test_result: testRst}}, {upsert : false}, function(error){ cnt++; if(error) { console.log(error); console.log('failed time: ' + (new Date())); callback("update failed!"); //break; } //if (cnt >= len) { // console.log('finished time: ' + (new Date())); // cb(null, 'calculate OK!'); //} }); } console.log('finished time: ' + (new Date())); cb(null, 'calculate OK!'); } else{ cb('No result found!'); } }); } ], function (err, data) { if (err) { callback(err, "calculate failed!"); } else { callback(err, data); } }); } module.exports = new CalDataDAO();