如何在json-server的/data端点新增字段且保留原有数据
如何为API端点新增字段并保留原有数据?
现有/data端点,初始数据结构如下:
{ "data": { "name": "...", "surname": "..." } }
尝试通过api.post('/data', { email })请求新增email字段,期望得到:
{ "data": { "name": "...", "surname": "...", "email": "..." } }
但实际执行后原有字段被覆盖,仅保留email:
{ "data": { "email": "..." } }
解决方法
后端调整(推荐方案)
将后端的POST接口改为增量更新逻辑:处理请求时先读取现有数据,再将请求体中的新字段合并到原有数据中,最后保存完整的合并结果,而非直接用请求体覆盖。
以Node.js为例,合并逻辑示例:
// 获取存储中的现有数据 const existingRecord = await fetchExistingData(); // 合并新字段(不覆盖原有已存在的字段) const updatedData = { ...existingRecord.data, ...req.body }; // 保存更新后的数据 await saveUpdatedData({ data: updatedData });
前端适配(后端无法修改时)
- 先获取再完整提交:先拉取当前
/data数据,合并新增字段后再发送完整数据:// 获取现有数据 const res = await api.get('/data'); const currentData = res.data; // 合并email字段 const newData = { ...currentData.data, email: 'your-email@example.com' }; // 发送完整数据 await api.post('/data', { data: newData }); - 使用PATCH请求:如果后端支持HTTP PATCH方法(规范中用于部分更新),直接发送仅包含新增字段的请求:
await api.patch('/data', { email: 'your-email@example.com' });
内容的提问来源于stack exchange,提问作者kamolmachine
相关产品推荐
相关产品推荐

