使用Nextjs,我正在努力从另一个API处理程序中的API处理程序中获取数据。
/api/batch.js
处理程序从MongoDB中检索一些数据:
import middleware from '../../libs/mongodb';
import nextConnect from 'next-connect';
const handler = nextConnect();
handler.use(middleware);
handler.get(async (req, res) => {
const {batch_uuid} = req.query
const batch_stats = await req.db.collection('stats').find({
'batch.uuid': uuid
}).toArray()
res.json(batch_stats)
})
export default (req, res) => handler.apply(req, res)
/api/stats.js
处理程序从MySQL检索一些数据,并基于该数据和Mongo的数据构建有效负载。
肮脏的修复程序的工作原理如下,stats.js
:
const response = await fetch('http://localhost:3000/api/batch?uuid=1234')
const data = await response.json()
// use data and build another payload
但是,这需要进行http调用,而对于内部端点则没有意义。
我尝试直接调用batch
处理程序,但得到undefined
const getBatch = require('./batch');
module.exports = async (req, res) => {
const accounts = await getBatch()
res.status(200).json({accounts})
}
我想念什么?
答案 0 :(得分:1)
您可以从数据库中提取数据到单独的模块,然后在两个API处理程序中导入该模块。 API处理程序不会使用一个API端点向另一个API端点发出请求,而只会使用从MongoDB提取数据的相同模块。