如何修复“ TypeError:Crud.Select_products不是函数”,NodeJS中的错误

时间:2019-01-02 22:37:25

标签: javascript node.js express

我正在尝试从Crud.js文件访问导出的类,但出现此错误。我的目标是执行sql查询。

错误:

TypeError: Crud.Select_products is not a function
  at C:\xampp\htdocs\react\crud\server.js:7:24
  at Layer.handle [as handle_request] (C:\xampp\htdocs\react\crud\node_modules\express\lib\router\layer.js:95:5)
  at next (C:\xampp\htdocs\react\crud\node_modules\express\lib\router\route.js:137:13)
  at Route.dispatch (C:\xampp\htdocs\react\crud\node_modules\express\lib\router\route.js:112:3)
  at Layer.handle [as handle_request] (C:\xampp\htdocs\react\crud\node_modules\express\lib\router\layer.js:95:5)
  at C:\xampp\htdocs\react\crud\node_modules\express\lib\router\index.js:281:22
  at Function.process_params (C:\xampp\htdocs\react\crud\node_modules\express\lib\router\index.js:335:12)
  at next (C:\xampp\htdocs\react\crud\node_modules\express\lib\router\index.js:275:10)
  at expressInit (C:\xampp\htdocs\react\crud\node_modules\express\lib\middleware\init.js:40:5)
  at Layer.handle [as handle_request] (C:\xampp\htdocs\react\crud\node_modules\express\lib\router\layer.js:95:5)

我正在使用10.15.0版中的NodeJ,我已经尝试过更改导出方式,但是仍然有相同的错误。

Server.js

var express = require('express');
var Crud = require('./database/Crud');
var app = express();


app.get('/api/home', function(req, res){
    let results = Crud.Select_products();
    res.send(results);

});

app.listen(5000, () => console.log('Escutando na porta 5000'));

Crud.js

var Connect = require('./Connect');

Class Crud {

  constructor(){
    Connect.Connecting();
  }

  Select_products(where){
    if(where !== undefined){
        let sql = 'Select * from produtos where id_produto = ?';
        Connect.query(sql, [where], function(err, result){
            if(err) throw err;
            return result;
        });
    }else{
        Connect.query('Select * from produtos', function(err, result){
            if(err) throw err;
            return result;
        });
    }
  }
}

module.exports = Crud;

我希望从数据库接收数据。

1 个答案:

答案 0 :(得分:0)

Crud是一个类,您正在尝试访问方法,方法属于实例。

您可以导出一个实例,创建一个单例模式,例如:

module.exports = new Crud();

或者您可以在server.js上创建一个实例,然后调用该方法

var Crud = require('./database/Crud');
var crud = new Crud();

app.get('/api/home', function(req, res){
  let results = crud.Select_products();
  res.send(results);
});

此外,当您开始使用此工具时,您将意识到自己还有更多问题。您的Select_products()函数不返回任何内容。如果您正在使用的库支持promises,您可能要向其发送一个回调函数,或使用async/await和promises