为什么它看不到我的调用函数的 res 部分?
这是我的调用函数 frontpageController.js
exports.getFrontpage = function(req, res) {
var priceController = require('./priceController');
var priceModel = require('../models/priceModel');
var priceTable = mongoose.model('priceModel');
var callPriceController = function() {
return new Promise((resolve, reject) => {
priceController.getPrice (
{ "body": { "propertyID": "WAT-606" } }
,function(err, data) {
console.log("HELLO!!! ");
if (!err) {
console.log("Result: " + JSON.stringify(data, null, 4));
} else {
console.log("ERR: " + err);
};
});
})};
callPriceController()
.catch(err => {
console.log("getFrontpage ERR: " + err);
//res.json({error:true,err});
})
}
这是我想要调用 getData
的控制器exports.getPrice = function(req, res){
//
// Validate the data we get from router
//
console.log("priceController received: " + JSON.stringify(req.body, null, 4));
res.json({error:false,test:"hello from getPrice"});
}
这是控制台日志:
GET /frontpageRoute/getFrontpage - - ms - -
priceController received: {
"propertyID": "WAT-606"
}
getFrontpage ERR: TypeError: res.json is not a function
这是getPrice路由器:
var express = require('express');
var router = express.Router();
var priceController = require('../controllers/priceController');
router.post('/getPrice', function(req, res) {
priceController.getPrice(req, res);
});
module.exports = router;
这是首页路由器
var express = require('express');
var router = express.Router();
var frontpageController = require('../controllers/frontpageController');
router.get('/getFrontpage', function(req, res) {
frontpageController.getFrontpage(req, res);
});
module.exports = router;
答案 0 :(得分:1)
由于getPrice(req, res)
需要req
和res
,因此您必须在致电getPrice
时将其传递。将 frontpageController.js 更新为此内容并查看其是否有效 -
exports.getFrontpage = function(req, res) {
var priceController = require('./priceController');
var priceModel = require('../models/priceModel');
var priceTable = mongoose.model('priceModel');
var callPriceController = function() {
return new Promise((resolve, reject) => {
priceController.getPrice ({ "body": { "propertyID": "WAT-606" } }, res,
,function(err, data) {
console.log("HELLO!!! ");
if (!err) {
console.log("Result: " + JSON.stringify(data, null, 4));
} else {
console.log("ERR: " + err);
};
});
})};
callPriceController()
.catch(err => {
console.log("getFrontpage ERR: " + err);
//res.json({error:true,err});
})
}
答案 1 :(得分:0)
callGetData()
.catch(err => {
console.log("ERR: " + err);
res.json({error:true,err})
}
res未在此范围内定义,这就是您收到此错误的原因
答案 2 :(得分:0)
我相信我明白这里发生了什么。
您正在致电myController.getData
,对吧?但是,此功能定义如下:
exports.getData = function(req, res){ }
所以它期待两个论点:req
和res
。
但看看你传递给它的是什么:第一个参数是{ "test": "TestData" }
,第二个参数是function(err, data) {...}
所以,在getData:
req == { "test": "TestData" }
res == function(req, res){...}
因此,res
已定义,但绝对不是您期望的那样。事实上,res.json
不是一个功能。
我认为getPrice
应该这样定义:
exports.getPrice = function(req, callback){
callback( null, {error:false, test:"hello from getPrice"});
}
现在,回到你的承诺,你得到err==null
和正确的数据。