next.js 导入API路由

oug3syen  于 2023-08-04  发布在  其他
关注(0)|答案(1)|浏览(128)

我应该如何将其重写为函数?我正在使用Next.JS构建一个工具,并使用他们的API端点与MongoDB进行交互。NextJS网站说:
注意:你不应该使用fetch()在你的应用程序中调用API路由。相反,直接导入API路由并自己调用其函数。对于这种方法,您可能需要稍微重构代码。从外部API获取是可以的!
我应该如何重构我的代码以适应这种方法?

import handler from '../../middleware/common_middleware';

handler.get(async (req, res) => {
    try {
        let query = req.query;
        let queryName = Object.values(query)[0];
        let doc = await req.db.collection("Volunteers").find({"_id": queryName}).toArray();
        res.status(201).json(doc);
    }
    catch {
        res.status(400).send("The profile doesn't exist.");
    }
});

export default handler;

字符串

9ceoxa92

9ceoxa921#

在这里查看NextJS文档:
https://nextjs.org/docs/api-routes/introductionhttps://github.com/vercel/next.js/blob/canary/examples/api-routes-rest/pages/api/users.js
你可能应该有一个这样的结构:

export default async (req, res) => {
    try {
        let query = req.query;
        let queryName = Object.values(query)[0];
        // modify with the module to make query to db
        let doc = await req.db.collection("Volunteers").find({"_id": queryName}).toArray();
        res.statusCode = 201;
        res.setHeader('Content-Type', 'application/json');
        res.end(JSON.stringify({status:'success', data: doc});
    }
    catch {
        res.statusCode = 400
        res.setHeader('Content-Type', 'application/json');
        res.end(JSON.stringify({status: 'error', data: 'The profile doesn't exist.' }))
    }

}

字符串
没有尝试过,但希望它能给你一个想法。

相关问题