javascript - Express JS REST API 与 MySQL

标签 javascript mysql rest express

我正在使用 Express.js 和 MySQL 进行练习。目前我有4个文件。错误是,

TypeError: areas.getAreas is not a function
    at Object.<anonymous> (/--/--/--/src/routes/userRoutes.js:4:13)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/--/--/--/src/app.js:10:20)
    at Module._compile (module.js:653:30)

但我确信我正在声明变量和函数,所以我不明白为什么会发生这种情况。

我尝试获取 userRoutes.js 文件中变量 areas 的值,但控制台只显示一个“{}”。我还尝试更改 areas.js 文件的函数的语法,将其编写为函数而不是像对象一样。

主文件是app.js,它包含:

const express = require('express');
const app = express();
const morgan = require('morgan'); 
const bodyParser = require('body-parser');
const mysql = require('mysql');

const connection = require('/--/--/--/db/connection.js');
const userRoutes = require('/--/--/--/routes/userRoutes.js');

app.set('port', process.env.PORT || 3000);

app.use(morgan('dev'));
app.use(bodyParser.json()); 

connection(mysql);    
userRoutes(app);

app.listen(app.get('port'), ()=> {
    console.log('server on port 3000');
});

接下来的文件是:

connection.js

'use strict';

module.exports = function connection(mysql){
    mysql.createConnection({
        host: 'http://x.x.x.x',
        user: 'xxxxxxx',
        password: 'xxxxxxx',
        database: 'xxxxxxx'
    })
};

areas.js

'use strict';

let areasModel = {};
areasModel.getAreas = (callback) => {
    if(connection) {
        connection.query(
            "SELECT * FROM areas",
            (err, rows) => {
                if(err) {
                    throw err;
                }
                else {
                    callback(null, rows);
                }
            }
        );
    }
};

module.exports = areasModel;

userRoutes.js

'use strict';

const areas = require('../models/areas');

module.exports = function (app) {
    app.get("/", (req,res)=>{
        areas.getAreas((err, data) => {
            res.json([]);
        });
    });
}

最佳答案

尝试在areas.js中导入connection.js, 可能是因为从未进入该 if 语句,返回未定义

关于javascript - Express JS REST API 与 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52826805/

相关文章:

api - WSO2 API Manager - 它可以在后端将 REST 请求转换为 SOAP 请求吗?

javascript - 在 JavaScript 中动态构建对象键

javascript - 自动计算valueAxis min

php - 从多个本地数据库更新服务器上的数据库

java - 如何处理 REST Web 服务中的资源验证?

c# - WebApi 2 HttpPut、HttpDelete、HttpPost 不起作用 - HTTP 错误 405.0 - 不允许方法

Javascript 逻辑 - FOR 循环如何知道自动访问哪个数组

javascript - 一个 javascript 文件会杀死所有其他文件。避免这种情况的方法?

android - 对于 Android 应用程序,哪个是最好的 firebase 或 php 和 json with mysql?

html - 表单提交后将纯html发送到mysql