Node.js Express:如何将POST API中的数组转为字典存储
把订阅者数组改为字典存储的修改方案
首先要调整subscribers.json的结构,从原来的数组格式:
[{"id": "uuid-1", "name": "张三", "email": "zhangsan@example.com"}, ...]
改成字典(对象)格式:
{"uuid-1": {"id": "uuid-1", "name": "张三", "email": "zhangsan@example.com"}, ...}
接下来修改API代码中的相关逻辑,核心改动是替换数组追加的逻辑,改为字典赋值操作:
修改后的完整代码:
router.post('/', async function(req, res, next) { const subscribersFile= path.join(__dirname, "../subscribers.json") const data = await fs.readFile(subscribersFile, "utf-8") // 现在解析后是对象(字典)而非数组 let subscribers= JSON.parse(data) let subscriber = req.body const id = uuid.v4(); subscriber = {...subscriber, id: id} // 核心修改:用生成的UUID作为键,将新订阅者存入字典 subscribers[id] = subscriber; const json = JSON.stringify(subscribers) await fs.writeFile(subscribersFile, json, "utf-8") return res.json({data: "POST", body: subscriber}) });
额外说明
- 改成字典存储后,后续查询单个订阅者时可以直接用
subscribers[id]获取,比遍历数组效率更高 - 如果需要返回所有订阅者的列表形式,可通过
Object.values(subscribers)将字典转为数组返回
内容的提问来源于stack exchange,提问作者Kanna
相关产品推荐
相关产品推荐

