节点js模块返回undefined

时间:2018-06-15 12:22:50

标签: node.js

我使用nodejs创建控制器和模型。当我尝试访问控制器内部的模型功能时。它的回归未定义。这是我的示例代码

userController.js文件

    var User = require('../models/user');
    // Display list of all Authors.
    exports.user_list = function(req, res) {
    var allUsers = User.allUser();
      console.log(allUsers); //It return undefined
      res.render("../views/users/index", {title : 'Users Listing'});
   };

模型/ user.js的

  var config = require('./../config');
  var User = {
    allUser: function () { 
         config.query("Select * from customer ", function (err, results, fields) {
          return results;
         });
     }
   };
   module.exports = User

index.js文件

    //Basic routing.
    var express = require( 'express' );
    var app = express();
    var config = require('./config');
    //Creating Router() object
    var router = express.Router();
    var user_controller = require('./controller/userController.js');
    router.get('/users', user_controller.user_list);
    //router.get('/users/:id/update', user_controller.user_detail);
    app.set('view engine', 'ejs');
    app.use("/",router);
     /* app.use("*",function(req,res){
      res.sendFile(__dirname + "/public/404.html");
     }); */
     // Listen to this Port
    app.listen(3000,function(){
       console.log("Live at Port 3000");
     });
    module.exports = router;

2 个答案:

答案 0 :(得分:0)

因为您没有将回调参数传递给userController.js中的User.allUser()调用

尝试这样称呼:

var allUsers = User.allUser(console.log);

它应该打印出你的结果。

答案 1 :(得分:0)

我认为你的命名是关闭的。

在userController.js文件中:var User = require('../ models / user');

但是,您的文件路径为:型号 /user.js

另外我假设基于代码userController.js位于控制器目录中。

yourproject
|-- controller
|   `-- userController.js
|-- model
|   `-- user.js      
|-- config.js
|-- index.js
`-- package.json