提问人:Yash Yadav 提问时间:11/11/2023 最后编辑:Andrew ChungYash Yadav 更新时间:11/11/2023 访问量:48
为什么 req.query 在 NEXT.js 中无法按预期运行?
Why isn't req.query functioning as expected in NEXT.js?
问:
我在最新的NextJS App Router中有以下代码,在文件中app\api\products\route.tsx
import { initMongoose } from "@/lib/mongoose";
import Product from "@/models/products";
import { NextApiRequest } from "next";
import { NextResponse } from "next/server";
export async function GET(req: NextApiRequest,res: NextResponse) {
await initMongoose();
console.log("Query is ",req.query);
return NextResponse.json( await Product.find().exec() )
}
但是,即使我使用查询参数命中终结点,它也会返回。Query is undefined
例:http://localhost:3000/api/products?abc=def
我想得到一个类似对象的东西:
{
"abc" : "def"
}
我正在使用 NextJS 的 14 版和 TypeScript。
这不是“使用客户端”问题。
此外,端点正在工作,因为我在响应中获取了所有产品。
答:
1赞
Octo Palm Tree
11/11/2023
#1
试试这个
import { initMongoose } from "@/lib/mongoose";
import Product from "@/models/products";
//import { NextApiRequest } from "next";
import { NextRequest, NextResponse } from "next/server";
export async function GET(req: NextRequest, res: NextResponse) {
//console.log("Query is ",req.query);
const searchParams = req.nextUrl.searchParams;
const abc = searchParams.get('abc');
console.log("Query is ", abc);
await initMongoose();
return NextResponse.json(await Product.find().exec());
}
NextJSv13.4+ 从使用 NextAPIRequest 切换到使用 NextRequest。NextAPIRequest 派生自 Node 请求,而 NextRequest 更直接地派生自 Web API 请求。随着更改,帮助程序方法也发生了变化。
评论
1赞
Yash Yadav
11/11/2023
谢谢。这项工作。
0赞
Yash Yadav
11/11/2023
还有一个问题,当我安慰查询时,它以符号作为键示例:[Symbol(state)],知道它们是什么意思吗?
评论