2017-10-12 30 views
0

Controller.js方法不是在節點JS明確定義的錯誤

<pre> 

    exports.getProducts = function(callback) 
    { 
     Product.find({},function(err,products) 
     { 
      if(products === null) 
      { 
       console.log('Products not available in DB');     
      } 
      if(err) 
      { 
       console.log(err); 
       callback(err,null); 
      } 
      else{callback(null,products)};   
     });  
    } 
    getProducts(function (err,data){ 
     if(err){console.error(err);} 
     else{console.log(data);} 
    }); 

</pre> 

App.js

<pre> 

    var express = require('express'); 
    var app = express(); 
    var port = process.env.PORT || 3000; 
    var bodyParser = require('body-parser'); 
    var cors = require('cors'); 
    var cookieParser = require('cookie-parser'); 
    var session = require('express-session'); 
    var morgan = require('morgan'); 
    app.use(cors()); 

    var Product = require('./server/controllers/ProductController'); 
    Product.save(); 
    console.log(Product.getProducts()); 

</pre> 

我試圖從app.js運行的getProducts()函數,但它顯示'getProducts'未定義失敗 任何人都可以告訴我我犯的錯誤嗎?

+1

它是'Controller.js'還是'ProductController.js'? –

+0

ProductController.js –

回答

2

這是發生了什麼事。有很多問題,但我們會通過他們。

  1. 你需要ProductController.js,這運行所有的代碼在該文件中。控制器的第一個塊將一個函數getProducts設置到exports對象上。該文件的第二部分將嘗試調用一個名爲getProducts的函數,該函數未定義爲。您試圖調用的函數定義爲exports.getProducts,而不是getProducts,這就是您遇到未定義錯誤的原因。 但這仍然是錯誤的。更多低於
  2. 在app.js中,您打電話給Product.getProducts()。這是exports.getProducts()。它需要一個回調參數,app.js中的getProducts調用中沒有提供該參數。

希望能幫助您找到解決方案,祝您好運!

+0

不要忘了controller.js文件沒有在任何地方定義'Product'。 –