繁体   English   中英

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

[英]How to fix "TypeError: Crud.Select_products is not a function”, error in NodeJS

我正在尝试从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;

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

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()函数不会返回任何内容。 如果您正在使用的库支持promise,则可能要向其发送一个回调函数,或使用async/await和promise

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM