Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于mysql的节点模块不工作_Javascript_Mysql_Node.js - Fatal编程技术网

Javascript 基于mysql的节点模块不工作

Javascript 基于mysql的节点模块不工作,javascript,mysql,node.js,Javascript,Mysql,Node.js,我有一个基于节点的应用程序,可以查看数据库中的数据。因为数据库相当大,有几个表,所以我正在编写一个模块来帮助模块化任务。问题是我无法让主代码返回数据库查找中的所有数据,因为我认为程序在执行之前就退出了。如何使节点模块正常工作?我的目的是让DB helper函数驻留在somethingheloper.js模块中。我的主代码silly.js如下所示: // silly.js var sh = require('./SomethingHelpers.js'); helper = new sh();

我有一个基于节点的应用程序,可以查看数据库中的数据。因为数据库相当大,有几个表,所以我正在编写一个模块来帮助模块化任务。问题是我无法让主代码返回数据库查找中的所有数据,因为我认为程序在执行之前就退出了。如何使节点模块正常工作?我的目的是让DB helper函数驻留在
somethingheloper.js
模块中。我的主代码
silly.js
如下所示:

// silly.js
var sh = require('./SomethingHelpers.js');
helper = new sh();

helper.then(function(res) {
  var promise = helper.getAllForUsername('sonny');
  promise.then(function(res) {
    console.log('worked', res);
  });
  promise.catch(function(err) {
    console.log('err: ', err);
  });
});
helper.catch(function(err) {
  console('Could not create object: ', err);
});
var mysql = require("mysql");

function SomethingHelpers() {
  return new Promise(function(resolve, reject) {
    this.connectionPool = mysql.createPool({
      connectionLimit: 100,
      host: 'server.somewhere.com',
      user: "username",
      password: "somepass",
      database: "sillyDB",
      debug: false
    });
  });
}

SomethingHelpers.prototype.getAllSomethingForUsername = function(username) {
    var result = [];

    return new Promise(function(resolve, reject) {
      this.connectionPool.getConnection(function(err, connection) {
        if (err) {
          console.log('Error connecting to the silly database.');
          return;
        } else {
          console.log('Connection established to the silly database.      Super-Duper!');
          return connection.query('SELECT something FROM somethingTable where username=\"' + username + '\"',
            function(err, rows, field) {
              connection.release();
              if (!err) {
                //console.log (rows.something);
                rows.forEach(function(item) {
                  var allSomething = JSON.parse(item.something);
                  console.log(allSomething.length);
                  result.push(allSomething);
                  for (var i = 0; i < allSomething.length; i++) {
                    console.log(allSomething[i].handle);
                  }
                  console.log('\n\n');
                });
                console.log('Done');
                return result;
              } else {
                console.log('Eeeeeeeek!');
                //console.log (result);
                return result;
              }
            });
        }
      });
    });
  } // End of getAllSomething ()

module.exports = SomethingHelpers;
somethinghelopers.js
如下所示:

// silly.js
var sh = require('./SomethingHelpers.js');
helper = new sh();

helper.then(function(res) {
  var promise = helper.getAllForUsername('sonny');
  promise.then(function(res) {
    console.log('worked', res);
  });
  promise.catch(function(err) {
    console.log('err: ', err);
  });
});
helper.catch(function(err) {
  console('Could not create object: ', err);
});
var mysql = require("mysql");

function SomethingHelpers() {
  return new Promise(function(resolve, reject) {
    this.connectionPool = mysql.createPool({
      connectionLimit: 100,
      host: 'server.somewhere.com',
      user: "username",
      password: "somepass",
      database: "sillyDB",
      debug: false
    });
  });
}

SomethingHelpers.prototype.getAllSomethingForUsername = function(username) {
    var result = [];

    return new Promise(function(resolve, reject) {
      this.connectionPool.getConnection(function(err, connection) {
        if (err) {
          console.log('Error connecting to the silly database.');
          return;
        } else {
          console.log('Connection established to the silly database.      Super-Duper!');
          return connection.query('SELECT something FROM somethingTable where username=\"' + username + '\"',
            function(err, rows, field) {
              connection.release();
              if (!err) {
                //console.log (rows.something);
                rows.forEach(function(item) {
                  var allSomething = JSON.parse(item.something);
                  console.log(allSomething.length);
                  result.push(allSomething);
                  for (var i = 0; i < allSomething.length; i++) {
                    console.log(allSomething[i].handle);
                  }
                  console.log('\n\n');
                });
                console.log('Done');
                return result;
              } else {
                console.log('Eeeeeeeek!');
                //console.log (result);
                return result;
              }
            });
        }
      });
    });
  } // End of getAllSomething ()

module.exports = SomethingHelpers;
var mysql=require(“mysql”);
函数somethinghelopers(){
返回新承诺(功能(解决、拒绝){
this.connectionPool=mysql.createPool({
连接限制:100,
主机:“server.somewhere.com”,
用户:“用户名”,
密码:“somepass”,
数据库:“sillyDB”,
调试:false
});
});
}
SomethingHelpers.prototype.getAllSomethingForUsername=函数(用户名){
var结果=[];
返回新承诺(功能(解决、拒绝){
this.connectionPool.getConnection(函数(err,connection){
如果(错误){
log('连接到数据库时出错');
返回;
}否则{
log('已建立到数据库的连接.Super-Duper!');
return connection.query('从其中username=\'+username+'\''的somethingTable中选择某物,
函数(错误、行、字段){
连接。释放();
如果(!err){
//console.log(rows.something);
rows.forEach(函数(项){
var allSomething=JSON.parse(item.something);
console.log(allSomething.length);
结果:推(所有的东西);
for(var i=0;i
我找到了自己问题的答案。我是这样解决的。首先,
somethinghelopers.js

//SomethingHelpers.js
var mysql = require('promise-mysql');

function SomethingHelpers () {
    this.pool = mysql.createPool({
    connectionLimit: 100,
    host: 'server.somewhere.com',
    user: "username",
    password: "somepass",
    database: "sillyDB",
    debug: false
    });
}

SomethingHelpers.prototype.getAllSomethingsForThisUsername = function (username) {
    let pool = this.pool;
    return new Promise(function (resolve, reject) {
    pool.getConnection ().then(function(connection) {
        connection.query('SELECT something FROM somethingsTable where username=\"'+
             username+'\"').
        then (function (rows) {
            resolve (getAllSomethings (rows));
        }).catch (function (error) {
            console.log ('Error: ', error);
        });
    });
    });
}

function getAllSomethings (rows)
{
    var result = [];
    rows.forEach (function (item) {
    var allSomethings = JSON.parse(item.something);
    result.push (allSomethings);
    });
    return result;
}

module.exports = SomethingHelpers;
凭借
承诺的荣耀
,可以享受助手模块的赏金:

//silly.js
var hh = require ('./SomethingHelpers');
helper = new hh ();

thePromiseOfSomething = helper.getAllSomethingsForThisUsername ('sonny');
thePromiseOfSomething.then(function (rows) {
    console.log (rows);
});

从而使我从异步思维(J/K)的暴政中解脱出来。

您的
SomethingHelpers
构造函数返回了一个承诺,但没有任何东西能解决它。感谢您的快速响应。我如何解决这个承诺?对不起,我是JS noob。不清楚这个承诺的意义是什么。承诺代码将
resolve()
reject()
函数传递给你的函数,以便你的代码在工作完成时调用。好的,有人能告诉我,如果没有
Promise
,我怎么能实现我所需要的吗?