TypeError:某些东西不是函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TypeError:某些东西不是函数相关的知识,希望对你有一定的参考价值。

首先,让我说我对javascript相对较新,这段代码是为了尝试学习新东西,所以即使不是我要求的具体问题,也可以随意评论任何内容。

我目前正在尝试集中我的代码,以便在我的Express js服务器中访问我的mysql数据库,并希望使用promises。这是我试过的:

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确实是一个函数。可能是什么导致了这个?

答案

您将其导出为exports.requests.getAllEmployees因此您必须将其用作:

 db.requests.getAllEmployees()

以上是关于TypeError:某些东西不是函数的主要内容,如果未能解决你的问题,请参考以下文章

用片段替换某些东西

TypeError:开玩笑:转换必须导出某些东西

获取 TypeError:validatetoken 不是函数

TypeError:不是构造函数

TypeError:input.includes 不是函数

TypeError: $(...).daterangepicker 不是函数