如何从Nextjs中的另一个api处理程序中的api处理程序中获取数据?

时间:2020-04-13 11:03:55

标签: node.js express next.js

使用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})
}

我想念什么?

1 个答案:

答案 0 :(得分:1)

您可以从数据库中提取数据到单独的模块,然后在两个API处理程序中导入该模块。 API处理程序不会使用一个API端点向另一个API端点发出请求,而只会使用从MongoDB提取数据的相同模块。