从节点控制器调用节点控制器,如何发送数据?

问题描述:

我有一个priceController节点这是一个很大的代码通过角在许多地方调用。从节点控制器调用节点控制器,如何发送数据?

现在我有一个名为frontpageController哪想直接调用priceController另一个节点,而不必去角做到这一点。

但我不知道如何饲料价格控制器与数据的正确方式(从它的角度来看,它容易导致其http后)。

我怎么叫priceControllerfrontpageController和发送它需要(属性ID)的数据?

这是priceController

var mongoose = require('mongoose'); 
exports.getPrice = function(req, res) { 
    console.log("priceController received: " + JSON.stringify(req.body, null, 4)); 
    console.log("propertyID: " +req.body.propertyID); 
    ...lots of code... 
    res.json({error:false,priceFindResult}) 
    console.log("Sent data back to caller"); 
} 

这是frontpageController

var mongoose = require('mongoose'); 
exports.getFrontpage = function(req, res) { 

    // 
    // Call the priceController with the PropertyID 
    // 
    var priceController = require('./priceController'); 
    var priceModel = require('../models/priceModel'); 
    var priceTable = mongoose.model('priceModel'); 
    var callPriceController = function() { 
     return new Promise((resolve, reject) => { 
     console.log("=====START callPriceController=====") 
     priceController.getPrice(
     [{ "propertyID": "WAT-606" }] 
     ,function(err, data) { 
      if (!err) { 
       console.log("callPriceController Result: " + JSON.stringify(data, null, 4)); 
       console.log("=====RESOLVE callPriceController=====") 
       resolve(data); 
      } else { 
       reject(new Error('ERR callPriceController : ' + err)); 
      }; 
     }); 
    })}; 

在我的节点控制台的结果是这样,它看起来如下

=====START callPriceController===== 
priceController received: undefined 
getFrontpage ERR: TypeError: Cannot read property 'propertyID' of undefined 

像我实际调用priceController但不管理,以获得属性ID送到那里。

我该怎么做?

我不能确切地告诉你这里要做什么,但函数getPrice需要参数req和res,这些参数可能被认为是请求和响应对象。当你打电话给getPrice时,你会传递一个数组和一个函数。由于该阵列没有属性body,因此req.body未定义,因此试图访问req.body(本例中为propertyId)的任何属性将抛出TypeError。但是,即使你已经超过了这一点,但在稍后尝试拨打res.json时会出错,因为您正在向它传递一个没有该方法的函数。

也许你可以传递req和res对象到getPrice

+0

稀释是 - 你是对的,我要解析身体。你会怎么做? – torbenrudgaard

+0

明白了这一点:'priceController.getPrice( \t \t {“body”:{“propertyID”:“WAT-606”}}''但是现在priceController抱怨说当它没有“res”时试图返回数据'res.json({error:false,priceFindResult})' – torbenrudgaard