如何发送从文件读取的数据作为 NodeJS 中快速路由的响应?
How to send data read from file as response from an express route in NodeJS?
我在本地文件夹中有一个 JSON 文件,其结构如下。
{
license: "abcd",
name: "abcd",
data: [
Array of JSON Objects ....
]
}
我想访问对象中的数据数组并将其作为来自快速路由的响应发送
这是我试过的。
import express from "express";
import fs from "fs";
import bodyParser from "body-parser";
var app = express();
app.use(bodyParser.json());
var fileData: string = fs.readFileSync("path to json file", { encoding: 'utf-8' });
var jsonData = JSON.parse(fileData).data;
console.log(jsonData);
app.get("/getJsonData", (err, res) => {
if (err)
throw err;
res.send(JSON.stringify(jsonData));
});
app.listen("3001", () => console.log("listening at 3001"));
当我在快速路由函数外记录它时显示正确 json,但在函数内响应是 [object Object],状态代码为 500(内部服务器错误)。
我也尝试了异步方法
var app = express();
app.use(bodyParser.json());
app.get("/getJsonData", (err, res) => {
if (err)
throw err;
fs.readFile("path to json file", (fileErr, result) => {
if(fileErr) throw fileErr;
var jsonData = JSON.parse(result.toString()).data;
res.json(jsonData);
});
});
但我得到与 [object Object] 相同的响应和状态代码 500。
我试过 res.send(JSON.stringify(jsonData))
但没有用。
如何使用 Express 将我从文件中获取的 json 数据发送到前端?
顺便说一句,我正在为此使用 TypeScript。
如果你想在你的快速服务器和客户端之间发送一个 json 对象,你需要通过 res.json(obj)
发送数据,其中 obj 必须明确地是一个 JSON对象(不能是 JSON 对象的数组)。你可以做的只是发送数组,只需将你的 jsonData 数组包裹在括号对中就可以了。
let jsonData = JSON.parse(fileData).data;
res.json({ jsonData });
//or if you dont understand the above use
res.json({ jsonData: jsonData})
//which is equivalent to the above line
这一行
app.get("/getJsonData", (err, res) =>
err
不是错误,它的请求应该是:
app.get("/getJsonData", (req, res) => {
res.send(JSON.stringify(jsonData));
});
它的字面意思是 express.js 的示例 Hello world
站点,在那里你会看到他们使用 req
https://expressjs.com/de/starter/hello-world.html
你总是得到 500 错误的原因是因为 err
,显然是请求,总是真实的
你也不需要对它进行字符串化,你可以这样做 res.json(jsonData)
我在本地文件夹中有一个 JSON 文件,其结构如下。
{
license: "abcd",
name: "abcd",
data: [
Array of JSON Objects ....
]
}
我想访问对象中的数据数组并将其作为来自快速路由的响应发送 这是我试过的。
import express from "express";
import fs from "fs";
import bodyParser from "body-parser";
var app = express();
app.use(bodyParser.json());
var fileData: string = fs.readFileSync("path to json file", { encoding: 'utf-8' });
var jsonData = JSON.parse(fileData).data;
console.log(jsonData);
app.get("/getJsonData", (err, res) => {
if (err)
throw err;
res.send(JSON.stringify(jsonData));
});
app.listen("3001", () => console.log("listening at 3001"));
当我在快速路由函数外记录它时显示正确 json,但在函数内响应是 [object Object],状态代码为 500(内部服务器错误)。
我也尝试了异步方法
var app = express();
app.use(bodyParser.json());
app.get("/getJsonData", (err, res) => {
if (err)
throw err;
fs.readFile("path to json file", (fileErr, result) => {
if(fileErr) throw fileErr;
var jsonData = JSON.parse(result.toString()).data;
res.json(jsonData);
});
});
但我得到与 [object Object] 相同的响应和状态代码 500。
我试过 res.send(JSON.stringify(jsonData))
但没有用。
如何使用 Express 将我从文件中获取的 json 数据发送到前端?
顺便说一句,我正在为此使用 TypeScript。
如果你想在你的快速服务器和客户端之间发送一个 json 对象,你需要通过 res.json(obj)
发送数据,其中 obj 必须明确地是一个 JSON对象(不能是 JSON 对象的数组)。你可以做的只是发送数组,只需将你的 jsonData 数组包裹在括号对中就可以了。
let jsonData = JSON.parse(fileData).data;
res.json({ jsonData });
//or if you dont understand the above use
res.json({ jsonData: jsonData})
//which is equivalent to the above line
这一行
app.get("/getJsonData", (err, res) =>
err
不是错误,它的请求应该是:
app.get("/getJsonData", (req, res) => {
res.send(JSON.stringify(jsonData));
});
它的字面意思是 express.js 的示例 Hello world
站点,在那里你会看到他们使用 req
https://expressjs.com/de/starter/hello-world.html
你总是得到 500 错误的原因是因为 err
,显然是请求,总是真实的
你也不需要对它进行字符串化,你可以这样做 res.json(jsonData)