node.js mysql查询返回查询对象而不是结果

时间:2018-08-29 12:36:52

标签: mysql node.js

我想使用node.js mysql库的PoolConnection功能向我的数据库发出简单的请求,但我没有收到响应,而是收到了这样的对象。请注意,查询对象包含一个错误,但没有抛出错误,我无法弄清楚此查询对象是什么问题。

Query {
domain: null,
_events: 
{ error: [Function],
packet: [Function],
end: [Function],
timeout: [Function],
'start-tls': [Function] },
_eventsCount: 5,
_maxListeners: undefined,
_callback: undefined,
_callSite: 
Error
at Protocol._enqueue (/var/task/node_modules/mysql/lib/protocol/Protocol.js:144:48)
at PoolConnection.query (/var/task/node_modules/mysql/lib/Connection.js:200:25)
at getUserByEmail (webpack:///./lib/dbRequests.js?:6:27)
at eval (webpack:///./functions/http/signin.js?:33:33)
at next (native)
at step (webpack:///./functions/http/signin.js?:10:191)
at eval (webpack:///./functions/http/signin.js?:10:361)
at process._tickDomainCallback (internal/process/next_tick.js:135:7),
_ended: false,
_timeout: undefined,
_timer: Timer { _object: [Circular], _timeout: null },
sql: 'SELECT * FROM users WHERE email = \'test@test.com\' ',
values: [ 'test@test.com' ],
typeCast: true,
nestTables: false,
_resultSet: null,
_results: [],
_fields: [],
_index: 0,
_loadError: null,
_connection: 
PoolConnection {
domain: null,
_events: { end: [Function: _removeFromPool], error: [Function] },
_eventsCount: 2,
_maxListeners: undefined,
config: 
ConnectionConfig {
host: 'test2.cymt1bwuuera.us-east-1.rds.amazonaws.com',
port: 3306,
localAddress: undefined,
socketPath: undefined,
user: 'root',
password: 'rootroot',
database: 'testdemand',
connectTimeout: 10000,
insecureAuth: false,
supportBigNumbers: false,
bigNumberStrings: false,
dateStrings: false,
debug: undefined,
trace: true,
stringifyObjects: false,
timezone: 'local',
flags: '',
queryFormat: undefined,
pool: [Object],
ssl: false,
multipleStatements: false,
typeCast: true,
maxPacketSize: 0,
charsetNumber: 33,
clientFlags: 455631,
protocol41: true },
_socket: 
Socket {
connecting: false,
_hadError: false,
_handle: [Object],
_parent: null,
_host: 'test2.cymt1bwuuera.us-east-1.rds.amazonaws.com',
_readableState: [Object],
readable: true,
domain: null,
_events: [Object],
_eventsCount: 6,
_maxListeners: undefined,
_writableState: [Object],
writable: true,
allowHalfOpen: false,
destroyed: false,
_bytesDispatched: 137,
_sockname: null,
_pendingData: null,
_pendingEncoding: '',
server: null,
_server: null,
_idleTimeout: -1,
_idleNext: null,
_idlePrev: null,
_idleStart: 244,
read: [Function],
_consuming: true },
_protocol: 
Protocol {
domain: null,
_events: [Object],
_eventsCount: 6,
_maxListeners: undefined,
readable: true,
writable: true,
_config: [Object],
_connection: [Circular],
_callback: null,
_fatalError: null,
_quitSequence: null,
_handshake: true,
_handshaked: true,
_ended: false,
_destroyed: false,
_queue: [Object],
_handshakeInitializationPacket: [Object],
_parser: [Object] },
_connectCalled: true,
state: 'authenticated',
threadId: 1876,
_pool: 
Pool {
domain: null,
_events: {},
_eventsCount: 0,
_maxListeners: undefined,
config: [Object],
_acquiringConnections: [],
_allConnections: [Object],
_freeConnections: [],
_connectionQueue: [],
_closed: false } } }

这是我的代码:

const MySqlConnection = require('./../../lib/MySqlConnection');
const { getUserByEmail } = require('./../../lib/dbRequests');

router.post('/signin', async (event) => {

    const { email, password } = JSON.parse(event.body);

    const con = new MySqlConnection();
    await con.connect();

    const creds = await getUserByEmail(con.connection, email); 
    console.log(creds);

    con.release();

dbrequests.js只是一个包装器:

module.exports = {
    getUserByEmail: (connection, email) => {
        console.log(email);
        return connection.query('SELECT * FROM users WHERE email = ? ', [email]);
    },
    insertNewUser: (connection, email, password) => {
        return connection.query('INSERT INTO users (email, password) VALUES (?, ?)', [email, password]);
    }
};

和MySQLConnection也是包装器:

const mysql = require ('mysql');

class MySQLConnection {
    constructor() {
        this.connection = null;
        this.pool = mysql.createPool({
            connectionLimit: 3,
            host: process.env.RDS_DB_URL,
            user: process.env.RDS_DB_USER,
            password: process.env.RDS_DB_PASSWORD,
            database: process.env.RDS_DB_DATABASE
        });
    }
    connect() {
        return new Promise((resolve, reject) => {
            this.pool.getConnection((err, connection) => {
                if (err) {
                    reject(err);
                    return;
                }
                this.connection = connection;
                console.log(this.connection);

                resolve();
            });
        });
    }
    query(query, params) {
        return new Promise((resolve, reject) => {
            this.connection.query(query, params, (err, res) => {
                if (err) {
                    reject(err);
                }
                console.log(res);
                resolve(res);
            });
        });
    }
    release() {
        return new Promise((resolve, reject) => {
            this.connection.release((err, res) => {
                if (err) {
                    reject(err);
                }
                resolve(res);
            });
        });
    }
}

module.exports = MySQLConnection;

0 个答案:

没有答案