我有一个 priceController 节点,这个节点在很多地方都是由角度调用的。
现在我有另一个名为 frontpageController 的节点,它希望直接调用 priceController ,而不必转到角度来执行此操作。
但是我无法弄清楚如何以正确的方式为数据提供 priceController (从角度很容易导致其http帖子)。
如何从 frontpageController 调用 priceController 并发送所需的数据(propertyID)?
这是 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 但是没有设法获取在那里发送的propertyID。
我该怎么做?
答案 0 :(得分:0)
我无法确切地说出你在这里要去做什么,但是函数getPrice
接受了req和res参数,这些参数可能是请求和响应对象。当你致电getPrice
时,你会传递一个数组和一个函数。由于数组没有属性body
,因此req.body
未定义,因此尝试访问req.body
的任何属性(在本例中为propertyId
)将会抛出一个TypeError。但是,即使您已超过这一点,当您尝试拨打res.json
时也会出错,因为您传递了一个没有该方法的功能。
也许你可以将req和res对象传递给getPrice
?