2017-05-30 125 views
0

我有一個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送到那裏。

我該怎麼做?

回答

0

我不能確切地告訴你這裏要做什麼,但函數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

相關問題