如何访问其他模块中一个对象的方法?

时间:2017-08-28 06:35:02

标签: node.js express

我在router.js文件中使用此语句。

var script = ('./script');
router.get('/getCustomer/:id',function (request, response) {
console.log('get method called.......');
script.getSingleCustomer(mongo.DATABASE, response);
});

和我的script.js

var Customer = require('./customerModel'); //my schema is defined in this script
module.exports = {
getSingleCustomer : function(database, request, response){
    // var user = new Customer({
    //     _id: request.params.id
    // });
database.collection('customer').findOne({}, function (error, results) {
        if (error) {
            console.log(error);
            response.json({statusCode: 400, statusData: 'The customer is not registered...', responseData: [results]});
        }
        console.log(results);
        response.json({statusCode: 200, statusData: 'Success', responseData: [results]});
    });
  }
};

现在我没有实现任何基于id的查询,我只需要访问数据库并将结果发送到Android应用程序,我收到以下错误:

TypeError: Cannot read property 'json' of undefined
at C:\Users\chhat\Upcomers Tech\customer\script.js:17:21
at handleCallback (C:\Users\chhat\Upcomers Tech\node_modules\mongodb\lib\utils.js:120:56)
at C:\Users\chhat\Upcomers Tech\node_modules\mongodb\lib\collection.js:1417:5
at handleCallback (C:\Users\chhat\Upcomers Tech\node_modules\mongodb\lib\utils.js:120:56)
at C:\Users\chhat\Upcomers Tech\node_modules\mongodb\lib\cursor.js:682:5
at handleCallback (C:\Users\chhat\Upcomers Tech\node_modules\mongodb-core\lib\cursor.js:171:5)
at nextFunction (C:\Users\chhat\Upcomers Tech\node_modules\mongodb-core\lib\cursor.js:682:5)
at C:\Users\chhat\Upcomers Tech\node_modules\mongodb-core\lib\cursor.js:593:7
at queryCallback (C:\Users\chhat\Upcomers Tech\node_modules\mongodb-core\lib\cursor.js:232:18)
at C:\Users\chhat\Upcomers Tech\node_modules\mongodb-core\lib\connection\pool.js:469:18
at _combinedTickCallback (internal/process/next_tick.js:73:7)
at process._tickCallback (internal/process/next_tick.js:104:9)

请帮我发送script.js的回复。 我正在为Android应用程序开发一个带有mongodb的node.js服务器,所以建议我一些服务器设计结构,因为我是后端开发的新手。

1 个答案:

答案 0 :(得分:0)

您正在使用两个参数调用该函数

script.getSingleCustomer(mongo.DATABASE, response);

但该功能需要3

getSingleCustomer: function(database, request, response)

因此request将保留response的实际内容,response中的undefinedgetSingleCustomer()。 要解决这个问题,要么不要让函数期望request(最好是,因为你不能在函数中使用它

getSingleCustomer: function(database, response)

或者用三个参数调用它(在这种情况下无意义)。

script.getSingleCustomer(mongo.DATABASE, request, response);

并修正function(databse, response)中的拼写错误,database