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