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

时间:2017-05-30 20:39:51

标签: javascript node.js

我有一个 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。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

我无法确切地说出你在这里要去做什么,但是函数getPrice接受了req和res参数,这些参数可能是请求和响应对象。当你致电getPrice时,你会传递一个数组和一个函数。由于数组没有属性body,因此req.body未定义,因此尝试访问req.body的任何属性(在本例中为propertyId)将会抛出一个TypeError。但是,即使您已超过这一点,当您尝试拨打res.json时也会出错,因为您传递了一个没有该方法的功能。

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