Node.js如何为查询结果新增非表字段并调整返回结构
问题描述
需要将FirstName和LastName两个非Student数据表字段添加到查询响应中,但当前代码合并后结构不符合预期。
当前代码
let result = await Student.get(id) let FirstName = "Paul" let LastName = "Richard" results = { ...result, FirstName: params.body.FirstName, LastName: params.body.LastName }
当前返回结果
{ 0:{ "Teacher": "adasfsafag", "Subject": "asdafdfhd", }, "FirstName": "Paul", "LastName": "Richard" }
期望返回结果
{ "Teacher": "adasfsafag", "Subject": "asdafdfhd", "FirstName": "Paul", "LastName": "Richard" }
原始返回结果(未添加字段时)
{ "data": { "School":{ "Teacher": "adasfsafag", "Subject": "asdafdfhd" } } }
解决方案
问题核心是没有正确定位到要合并字段的目标对象——原始返回结果中Teacher和Subject实际在result.data.School下,而非直接在result根节点。调整代码如下:
let result = await Student.get(id); let FirstName = "Paul"; let LastName = "Richard"; // 定位到包含Teacher/Subject的目标对象 const schoolData = result.data.School; // 合并非表字段到目标对象 const results = { ...schoolData, FirstName: FirstName, // 若需从请求体取值则替换为 params.body.FirstName LastName: LastName // 若需从请求体取值则替换为 params.body.LastName };
说明
- 先从
result.data.School取出包含原有字段的对象,再通过扩展运算符...合并新字段,就能得到结构符合预期的响应。 - 注意代码中存在变量定义与赋值不一致的问题:你定义了
FirstName = "Paul",但合并时用了params.body.FirstName,请根据实际需求选择使用自定义变量值还是请求体参数。
内容的提问来源于stack exchange,提问作者Yuno
相关产品推荐
相关产品推荐

