2017-09-04 2 views
0

Je voudrais accéder à une méthode d'un autre module appelant cette méthode à l'intérieur d'une route. avec cette notation de module.exports travail does't beacause dans ma console, je reçois une erreur comme getProducts n'est pas une fonctionNode.js accès à une méthode à partir d'un autre module

const express = require('express'); 
const router = express.Router(); 
const path = require('path'); 
const productsController = require('../controller/productsController') 

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

// send html file 
router.get('/', function (req, res) { 
    res.sendFile(path.join(__dirname, '../public/esercitazione-AJAX.html')); 
    }); 
    //to /getProducts call a method from productsController 
    router.get('/getProducts', function (req, res){ 

    productsController.productsController() 
}); 

module.exports = router; 

c'est mon module

//productsController.js 
const productModel = require('../models/productModel'); 

var productsController = function() { 
    console.log('productsController') 

    var getProducts = function(req,res,callback) { 
    var callback = function(result) { 

     res.send(result); 
    } 
    productModel.getProducts(req, res, callback); 
    } 
} 

module.exports = new productsController(); 

Répondre

0

Le principal problème est que vous exporter pas une fonction, mais un objet. Juste exporter une fonction:

module.exports = productsController; 

Un autre problème est que votre fonction a un nom incorrect, productsController est un module, mais le nom de la fonction doit être quelque chose comme getProducts:

exports.getProducts = function() { 
    console.log('getProducts ') 

    var getProducts = function(req,res,callback) { 
    ... 

et de l'utiliser de façon:

const productsController = require('../controller/productsController'); 

productsController.getProducts(); 
+0

si j'utilise cette notation je reçois cette erreur TypeError: productsController.getProducts est pas une fonction, je dois exporter un objet et acce ss à une méthode productsController, ceci est mon objectif –

+0

Etes-vous sûr que vous avez copié tout mon code? – alexmac

+0

mon erreur désolé, Maintenant, j'ai copié le bon code, mais ce type d'exportations est égal à module.exports = new module(); –