123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- /**
- * 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();
|