我正在开发一个MEAN堆栈应用程序,我正在尝试创建一些Angular客户端可以$http.get
的API端点,其中简单的JSON文件填充了虚拟数据。
这是{I}尝试使用以下内容的orders.json
文件:
[
{
"order_status":"Shipped",
"order_qty":30
},
{
"order_status":"Shipped",
"order_qty":6
}
]
例如,api路由到$ http.get:
apiRouter.get('/:fileName', queries.getStaticJSONFileForDevelopment);
但是,当我尝试将快速sendFile
方法与本地.json文件一起使用时,例如orders.json
:
queries.js:
exports.getStaticJSONFile = function(req, res) {
var fileName = req.params.fileName;
console.log('path: ' + path.normalize(__dirname + '/' + fileName));
res.sendFile(path.normalize(__dirname + '/' + fileName), function(err) {
if (err) return res.send({ reason:error.toString() });
});
};
console.log
告诉我,我指出了文件的正确路径,但Postman传达了这个错误:
TypeError: undefined is not a function
at Object.exports.getStaticJSONFile [as handle] (path/to/queries.js:260:7)
// queries.js:260:7 points to the 's' in 'sendFile' above
但是,当我只发送json数据时:
res.send([{"order_status":"Shipped","order_qty":30},{"order_status":"Shipped","order_qty":6}]);
...端点按照您的预期呈现数据。我是否试图让sendFile方法做一些它不应该做的事情,或者我有什么遗漏?非常感谢您的任何建议!
答案 0 :(得分:1)
如果你想用json读取json文件和响应,那么你可以试试这个:
var jsonfile = require('jsonfile');
exports.getStaticJSONFile = function(req, res) {
var fileName = req.params.fileName;
var file = path.normalize(__dirname + '/' + fileName);
console.log('path: ' + file);
jsonfile.readFile(file, function(err, obj) {
if(err) {
res.json({status: 'error', reason: err.toString()});
return;
}
res.json(obj);
});
};