NextJS API 指向 index.js 文件而不是 [id].js
NextJS API directing to index.js file instead of [id].js
我正在 NextJS 中设置 API。目前,我有一个 routes /classes 的文件夹。在这个文件夹中,我有 index.js 和 [id].js。 1
/classes/ 的目的是获取数据库中的所有 classes 或 post 一个新的 class。
/classes/[id] 的目的是获取特定的 class、编辑 class 或删除它。我的问题是,当我尝试通过 id 获取 class 时,它会返回 index.js 文件中的所有 classes。关于我缺少的东西有什么想法吗?
index.js
if (req.method === 'GET') {
try {
console.log('in index get')
const allClasses = await db.collection('classes').orderBy('name').get()
const classes = allClasses.docs.map((doc) => {
return {
id: doc.id,
...doc.data()
}
})
res.status(200).json(classes)
} catch (error) {
res.status(400).json({
error: error.message
})
}
} else if (req.method === "POST") {
try {
await db.collection('classes').add({
...req.body,
lastUpdated: new Date().toISOString()
})
res.status(200).json({
message: 'New Class Created'
})
} catch (e) {
res.status(500).json({
error: 'There was an error adding class'
})
}
}
[id].js
switch (method) {
case 'GET':
try {
console.log('in id get')
const classById = await db.collection('classes').doc(id).get().data()
res.status(200).json(classById)
} catch (error) {
res.status(400).json({
error: `Class does not exist`
})
}
break;
case 'DELETE':
try {
await db.collection('classes').doc(id).delete()
res.status(200).json({
message: 'Class Deleted Successfully'
})
} catch (error) {
res.status(400).json({
error: `Class does not exist`
})
}
break;
case 'PUT':
try {
await db.collection('classes').doc(id).update({
...req.body,
lastUpdated: new Date().toISOString()
})
res.status(200).json({
message: 'Class Updated Successfully'
})
} catch (error) {
res.status(400).json({
error: `Class does not exist`
})
}
break;
default:
res.setHeader('Allow', ['GET', 'PUT', 'DELETE'])
res.status(405).end(`Method ${method} Not Allowed`)
break;
}
来自您的评论
{{localhost}}/api/classes/?id=DSGY9jjuY43M210uFg1U
尝试这样做:
{{localhost}}/api/classes/DSGY9jjuY43M210uFg1U
我正在 NextJS 中设置 API。目前,我有一个 routes /classes 的文件夹。在这个文件夹中,我有 index.js 和 [id].js。 1
/classes/ 的目的是获取数据库中的所有 classes 或 post 一个新的 class。 /classes/[id] 的目的是获取特定的 class、编辑 class 或删除它。我的问题是,当我尝试通过 id 获取 class 时,它会返回 index.js 文件中的所有 classes。关于我缺少的东西有什么想法吗?
index.js
if (req.method === 'GET') {
try {
console.log('in index get')
const allClasses = await db.collection('classes').orderBy('name').get()
const classes = allClasses.docs.map((doc) => {
return {
id: doc.id,
...doc.data()
}
})
res.status(200).json(classes)
} catch (error) {
res.status(400).json({
error: error.message
})
}
} else if (req.method === "POST") {
try {
await db.collection('classes').add({
...req.body,
lastUpdated: new Date().toISOString()
})
res.status(200).json({
message: 'New Class Created'
})
} catch (e) {
res.status(500).json({
error: 'There was an error adding class'
})
}
}
[id].js
switch (method) {
case 'GET':
try {
console.log('in id get')
const classById = await db.collection('classes').doc(id).get().data()
res.status(200).json(classById)
} catch (error) {
res.status(400).json({
error: `Class does not exist`
})
}
break;
case 'DELETE':
try {
await db.collection('classes').doc(id).delete()
res.status(200).json({
message: 'Class Deleted Successfully'
})
} catch (error) {
res.status(400).json({
error: `Class does not exist`
})
}
break;
case 'PUT':
try {
await db.collection('classes').doc(id).update({
...req.body,
lastUpdated: new Date().toISOString()
})
res.status(200).json({
message: 'Class Updated Successfully'
})
} catch (error) {
res.status(400).json({
error: `Class does not exist`
})
}
break;
default:
res.setHeader('Allow', ['GET', 'PUT', 'DELETE'])
res.status(405).end(`Method ${method} Not Allowed`)
break;
}
来自您的评论
{{localhost}}/api/classes/?id=DSGY9jjuY43M210uFg1U
尝试这样做:
{{localhost}}/api/classes/DSGY9jjuY43M210uFg1U