nodejs将服务注入到另一个服务中

目前,我有一个控制器,它使用服务填充数组,然后计算该数组的中位数。

我想要做的是,而不是拥有控制器内的所有逻辑,我想创build一个新的服务,并在该服务内进行计算。

这是我有的控制器,它正在工作。

var RefCompanyService = require('../services/RefCompany.service') var math = require('mathjs'); _this = this exports.getMedian = async function (req, res, next) { var mxnRateList = []; var page = req.query.page ? req.query.page : 1 var limit = req.query.limit ? req.query.limit : 10; console.log(page, limit) try { var refCompanies = await RefCompanyService.getRefCompanies({}, page, limit) /**Median */ for (i = 0; i < refCompanies.docs.length; i++) { mxnRateList.push(refCompanies.docs[i].currency.mxn); } var median = { median: { mxn: math.median(mxnRateList), } } return res.status(200).json({ status: 200, data: median, message: "Succesfully Calculate Median rate" }); } catch (e) { return res.status(400).json({ status: 400, message: e.message }); } } 

这是添加一个median.service.js后的控制器

 var MedianService = require('../services/median.service') exports.getMedian = async function (req, res, next) { var page = req.query.page ? req.query.page : 1 var limit = req.query.limit ? req.query.limit : 10; console.log(page, limit) try { var median = await MedianService.median(); return res.status(200).json({ status: 200, data: median, message: "Succesfully Calculate Median rate" }); } catch (e) { return res.status(400).json({ status: 400, message: e.message }); } } 

这是新的服务,median.service.js

 var RefCompanyService = require('./RefCompany.service') var math = require('mathjs'); var RefCompany = require('../models/refCompany.model') _this = this exports.median = async function (query, page, limit) { var mxnRateList = []; try { // I think this is a problem var refCompanies = await RefCompanyService.getRefCompanies({}, page, limit) /**Median */ for (i = 0; i < refCompanies.docs.length; i++) { mxnRateList.push(refCompanies.docs[i].currency.mxn); } /**Calculate median, High, low*/ var median = { median: { mxn: math.median(mxnRateList) } } var median = 0; return median; } catch (e) { throw Error("Error while calculating Median") } } 

我敢肯定,我的控制器工作正常,因为我检查了虚拟数据,并正确传递数据。 我认为给我一个问题是这条线

 var refCompanies = await RefCompanyService.getRefCompanies({}, page, limit) 

在median.service.js,所以我注入另一个服务到这个服务,但是当我用POSTMAN尝试它给我一个错误

 { "status": 400, "message": "Error while calculating Median" } 

我认为refCompanies不能通过服务来填充它。

问题是,我不得不声明和初始化这两个variables:

 var page = 1 var limit = 10;