为什么一个 API 响应只返回一个对象和一组对象?
Why is one API response returning just an object over and array of objects?
目前我的 Api 是 return 对象而不是数组中的对象,但是我似乎无法分辨这两条路线之间的区别以及为什么 return表示数组中的数据超过了其他。
例如:
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])
})
})
上面的路由 return 是一个数据数组,而下面的 return 只是一个对象
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);
})
})
------------------------ 对于上下文-------- ----------------------
我已经多次执行此方法,甚至在其他脚本文件中也是如此,但我并没有被要求以这种方式解析数据,这里是不是有什么地方不对劲了,我没仔细看?我错过了 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)
forEach() 是为数组设计的,但你可以像这样将集合和对象类型转换为数组...
var I=[...items];
var D=[...items.data]
现在你应该没问题了,试试...
I.data.forEach((item) => {}
D.forEach(() => {}
如果我理解正确,这就是你收到的请求结果:
{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));
目前我的 Api 是 return 对象而不是数组中的对象,但是我似乎无法分辨这两条路线之间的区别以及为什么 return表示数组中的数据超过了其他。
例如:
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])
})
})
上面的路由 return 是一个数据数组,而下面的 return 只是一个对象
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);
})
})
------------------------ 对于上下文-------- ----------------------
我已经多次执行此方法,甚至在其他脚本文件中也是如此,但我并没有被要求以这种方式解析数据,这里是不是有什么地方不对劲了,我没仔细看?我错过了 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)
forEach() 是为数组设计的,但你可以像这样将集合和对象类型转换为数组...
var I=[...items];
var D=[...items.data]
现在你应该没问题了,试试...
I.data.forEach((item) => {}
D.forEach(() => {}
如果我理解正确,这就是你收到的请求结果:
{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));