从文件 express js 提供 json
Posted
技术标签:
【中文标题】从文件 express js 提供 json【英文标题】:Serving json from a file express js 【发布时间】:2018-05-12 09:16:02 【问题描述】:新手要表达,我有一个包含 db.json 文件的文件夹,它每 11 秒被一个新的 db.json 替换。让 express.js 服务它以便在 api 调用上显示新内容的最佳方式是什么?这是我目前所拥有的:
const express = require('express');
const router = express.Router();
router.get('/api/items', (req, res) =>
let dbPath = require('./data/db.json');
res.send(JSON.stringify(dbPath));
);
db.json 看起来像这样
["recordType": "E90", "count": "55", "space": "4" ,
"recordType": "A48", "count": "40", "space": "5" , ....]
问题:下次调用 api 时我没有看到更新的值。
【问题讨论】:
这应该适合你,不是吗? 为什么 JSON 文件每 11 秒被替换一次? 最好的方法是根本不在每个路由请求上加载文件。磁盘读/写通常很慢。你最好使用像 Redis / MongoDB 这样的数据库(取决于你的需要)。 Redis 或 MongoDB 等数据库将常用资产缓存在 RAM 中,因此您可以期望它更快。 @kentor express sendFile 已经使用流传输文件 此设置无效。那么拥有数据库是唯一的选择吗? 【参考方案1】:试试这个:
const fs = require('fs');
router.get('/api/items', (req, res) =>
fs.readFile('./data/db.json', (err, json) =>
let obj = JSON.parse(json);
res.json(obj);
);
);
希望对你有帮助
【讨论】:
能否以任何方式发送内容而不是文件? 是的,在这种情况下你可以使用JSON.parse
,我为你更新了答案
这只是我添加的“__dirname”并且有效。以上是关于从文件 express js 提供 json的主要内容,如果未能解决你的问题,请参考以下文章
NodeJS + Express 提供的 HTML 文件未加载 js 文件?
尝试通过 express node.js 提供 ejs 文件时出错
将 Express.js 与 React.js 一起使用的推荐方式?
使用 Node JS / Express 提供包含图像的静态 HTML 页面