为什么一个API响应返回的只是一个对象和对象数组?



目前我的Api是返回一个对象,而不是数组中的对象,但是我似乎不能告诉这两种路由之间的区别,为什么一个会返回数据数组而不是另一个。
例如:

router.get('/caseDetail/:id', (req,res) => {
db.caseDetail.findOne({
include : [db.Part,db.Fault,db.Disposition,db.Contact,db.Site]
}).then((response) => {
res.json(response);
}).catch((error) => {
console.table([stack.error,stack.id,error])
})
})

上面的路由返回一个数据数组,而下面的路由只返回一个对象

router.get('/caseDetail/:caseName', (req,res) => {
db.caseDetail.findAll({

include : [db.Part,db.Fault,db.Disposition,db.Contact,db.Site],
where : {
caseName:{ 
[Op.like]: req.params.caseName}
}
}).then((response) => {
console.log(response);
res.json(response)
}).catch((error) => {
console.log(error);
})
})

--------------------------<上下文strong>----------------------------
我已经制定了这个方法多次,甚至在其他脚本文件,但我还没有被要求以这种方式解析数据,是什么形状在这里,我看?我错过了JSON.parse();在这里吗?Github

try { 
const items = await axios.get(`/api/caseDetail/:caseName` + caseName);
console.log(items.data); 
$tbody.empty()
items.data.forEach((item) => {
console.log(item);

返回结果
{id: 2, caseName: "1 - Fenway Park - 1", createdAt: "2021-07-27T18:13:55.000Z", updatedAt: "2021-07-27T18:13:55.000Z", UserId: 1, …}

错误消息

TypeError: items.data.forEach is not a function
at callSearchResults (searchInventory.js:29)

如果我理解正确,这是您从请求中收到的结果:

{id: 2, caseName: "1 - Fenway Park - 1", createdAt: "2021-07-27T18:13:55.000Z", updatedAt: "2021-07-27T18:13:55.000Z", UserId: 1, …}

然后,您需要将其中的条目取出并遍历它们,如下所示:

for (const [key, value] of Object.entries(items)) {
console.log(`${key}: ${value}`);
}

或者像这样:

Object.entries(items).forEach(([key, val]) => console.log(key, val));

forEach()是为数组设计的,但是你也可以像这样将集合和对象类型转换为数组…

var I=[...items];
var D=[...items.data]

现在你应该没事了,试试…

I.data.forEach((item) => {}
D.forEach(() => {}

相关内容

  • 没有找到相关文章

最新更新