javascript - 使用 NodeJS 中另一个模块的属性

标签 javascript node.js

我有一个名为 myService.js 的文件,我在其中通过使用加热或冷却系统定义季节。它们是不同的,特别是在季节相反的南半球国家(例如澳大利亚):

const myService= {};

const yearTimes = {
    JapanDefault: {
        heat: new YearTime('heat', 'Sep', 15, 'Mar', 1),
        cool: new YearTime('cool', 'Mar', 14, 'Sep', 14)
    },
    AustraliaDefault: {
        heat: new YearTime('heat', 'Jul', 1, 'Aug', 31),
        cool: new YearTime('cool', 'Sep', 1, 'Mar', 1) 
    }
};

myService.gettingAnalysis = function (site, Key) {
    return Promise.all([
        myService.findingHeat(site, Key),
        myService.findingCool(site, Key)
    ]).spread(function (heat, cool) {
        return { heating: heating, cooling: cooling };
    });
};
myService.findingHeat = function (site, Key) {
    return Promise.resolve(YearTime[Key] && YearTime[Key]['heat'] || defaults['heating']);
};

module.exports = myService;

在另一个文件中,我必须检查不同的情况,例如,如果夏天使用暖气,我应该显示警告。该代码对于北半球工作正常,但对于南半球则错误,因为它检测到在夏季(五月、六月)使用供暖系统,但在这种特殊情况下,该地区是冬季。 这是第二个名为 Breakdown.js 的文件:

const _ = require('underscore');
const util = require('util');
const stats = require('simple-statistics');

const myService = require('./myService');
const SUM = 10;



...

check('must not indicate heating in summer', function (report) {
        const model = report.findSection('Breakdown').model;
        const heatingSeries = _.findWhere(model.series, { name: 'Space heating' });
        if (!heatingSeries || model.series.length === 1) {
            return;
        }

        const totalAccounts = _.size(report.asModel().accountNumbers);
        // TODO: "summer" varies per cohort
        const warnings = _.compact(_.map(['May', 'Jun'], function (monthLabel) {
            const summerIndex = _.indexOf(model.xAxisLabels, monthLabel);
            const heatingSummerCost = heatingSeries.data[summerIndex];
            if (heatingSummerCost > (totalAccounts * SUM)) {
                return {
                    month: monthLabel,
                    cost: heatingSummerCost,
                    accounts: totalAccounts
                };
            }
        }));
        this.should(!warnings.length, util.format('heating in summer recommended'));
    })
...

我尝试做的是将 ['May', 'Jun'] 替换为 myService.findingHeat(site, key)myService.seasons .AustraliaDefault,以便让它检测该地区是否不是夏季,并且有取暖费用是正常的。 有谁知道如何解决这个问题吗?

最佳答案

您正在尝试替换数组 ['July', 'Aug']带有 myService.findingHeatingSeason(report.site, report.cohort) 返回的 Season 对象或myService.seasons.AustraliaDefault这可能会导致一些不一致。您能否也指定您的 Season 构造函数?

关于javascript - 使用 NodeJS 中另一个模块的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43473722/

相关文章:

javascript - 如何使用 FileReader javascript 读取 XML 文件?

php - IE8中JS动态创建元素添加占位符

javascript - D3 JS - Force Graph - 删除节点后不重新启动布局

javascript - this.setState() 无法正常处理绑定(bind)事件

javascript - 使用以下命令在nodeJs和angularJS之间共享变量

javascript - 使用异步/等待不起作用

javascript - 使用无限滚动动态加载对齐的图库图像

javascript - 并行 API 请求的异步模块错误

node.js - Node.js 中的非阻塞循环和池化?

javascript - 无法在 Express + Passport 应用程序/身份验证测试中发布