NODE.js - 如何在其他方法中使用方法

0 javascript node.js

我想在同一个类中的其他方法中使用方法来从db计算一些数据,如下所示,但我只是得到错误

[TypeError: Object #<Query> has no method 'methodMaxLct']"
Run Code Online (Sandbox Code Playgroud)
 exports.UserClass = function() {
 this.methodMaxLct = function(lct, callback) {
   var counting = Math.ceil(Math.pow(1.15, (lct - 1)) * 10) * 10;
   callback(counting);
   this.methodGetData = function(idu, callback) {
     connection = mysql.createConnection(dbconfig);
     connection.query(dataUserResources, [idu], function(err, results, fields) {
       if (err) throw err;
       if (results.length == 0) {
         callback = 0;
       } else {
         for (var i in results) {
           var dataU = results[i];
         }
         dataU.enMax = 30;
         var ap = this.methodMaxLct(dataU.lct, function(answer) {
           dataU.lctMax = answer;
         });
         callback(dataU);
       }
       connection.end();
     });
   };
 };
Run Code Online (Sandbox Code Playgroud)

任何人都可以给我一个提示或相同的线索如何以正确的方式做到这一点?

And*_*CIO 5

试试吧.您必须将此对象存储到变量中,以便可以在内部函数中使用它.将this根据所执行的上下文是不同的.

exports.UserClass = function() {
 var self = this;
 this.methodMaxLct = function(lct, callback) {
   var counting = Math.ceil(Math.pow(1.15, (lct - 1)) * 10) * 10;
   callback(counting);
   this.methodGetData = function(idu, callback) {
     connection = mysql.createConnection(dbconfig);
     connection.query(dataUserResources, [idu], function(err, results, fields) {
       if (err) throw err;
       if (results.length == 0) {
         callback = 0;
       } else {
         for (var i in results) {
           var dataU = results[i];
         }
         dataU.enMax = 30;
         var ap = self.methodMaxLct(dataU.lct, function(answer) {
           dataU.lctMax = answer;
         });
         callback(dataU);
       }
       connection.end();
     });
   };
 };
Run Code Online (Sandbox Code Playgroud)