Ошибка типа: что-то не является функцией - PullRequest
0 голосов
/ 22 октября 2018

Прежде всего, позвольте мне сказать, что я относительно новичок в javascript, и этот код предназначен для того, чтобы попытаться изучить что-то новое, поэтому не стесняйтесь комментировать что-либо, даже если это не конкретный вопрос, который я задаю.

В настоящее время я пытаюсь централизовать свой код для доступа к моей базе данных MySQL на моем сервере Express js и хотел использовать обещания.Это то, что я пытался:

let mysql = require('mysql');

    var connectionPool = mysql.createPool({
    host: 'localhost',
    user: 'user',
    password: 'password',
    database: 'database',
    connectionLimit: 10
});

function getConnection() {
    return new Promise(afterConnecting => {
        connectionPool.getConnection((err, connection) => {
            if (err) throw err;
            return afterConnecting(connection);
        });
    });
}

function queryConnection(connection, queryString) {
    return new Promise(consumeRows => {
        connection.query(queryString, function (err, rows) {
            connection.release();
            if (err) throw err;
            return consumeRows(rows);
        });
    });
}

exports.requests = {
    getAllEmployees: function () {
        const queryString = 'SELECT id, name FROM employees;
        return getConnection()
            .then(connection => {
                return queryConnection(connection, queryString);
            });
    }
};

Я пытаюсь вызвать getAllEmployees() так:

var express = require('express');
var router = express.Router();
var db = require('../database');

router.get('/', function (req, res) {
    db.getAllEmployees()
        .then(rows => {
            res.setHeader('Content-Type', 'application/json');
            res.send(JSON.stringify(rows));
        });
});

module.exports = router;

Моя проблема в том, что я получаю сообщение об ошибке TypeError "db.getAllEmployees нефункция".При отладке VS Code утверждает, что db.getAllEmployees действительно функция.Что может быть причиной этого?

1 Ответ

0 голосов
/ 22 октября 2018

Вы экспортируете его как exports.requests.getAllEmployees, поэтому вы должны использовать его как:

 db.requests.getAllEmployees()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...