You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt3中event.context.params.id显示undefined,如何获取动态路由ID?

解决Nuxt3中获取动态路由ID的问题

正确获取动态路由参数的方式

在Nuxt3的服务器端处理函数(defineEventHandler)中,动态路由参数直接挂载在event.params对象上,无需访问event.context.route或event.context.params。

修正后的代码示例

import sql from "mssql";

export default defineEventHandler(async (event) => {
  // 直接从event.params解构获取动态路由参数
  const { id, db_name } = event.params;
  const db = {
    ...useRuntimeConfig().db,
    database: db_name,
  };
  const table = "questions";
  const catable = "Categories";

  await sql.connect(db);
  let result;
  if (event.node.req.method === "GET") {
    // 改用参数化查询,避免SQL注入风险
    result = await sql.query(
      `SELECT Category, Description, Icon, Title, ID 
       FROM ${catable} 
       JOIN ${table} ON ${catable}.CategoryId = ${table}.CategoryId 
       WHERE ${catable}.CategoryId = @id`,
      { id: id }
    );
  }
  return result?.recordset;
});

关键注意事项

  • 确保服务器路由文件命名符合动态路由规则:比如要获取id参数,文件需命名为server/api/[id].ts(或嵌套路径如server/api/categories/[id].ts),参数名要与方括号内的名称完全一致。
  • 必须使用参数化查询:原代码的字符串拼接SQL存在严重的SQL注入风险,修正后的代码采用参数化方式传递id,这是后端数据库操作的基本安全规范。
  • 调试时可直接打印event.params查看所有路由参数:console.log(event.params)。

内容的提问来源于stack exchange,提问作者Shree

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 00:57:12