module通过引用导出属性

时间:2017-09-12 08:48:35

标签: javascript node.js class caching ecmascript-6

我有一个缓存类:

class Cache {
    constructor() {
        this._cache = {};
    }

    refresh(cb) {
        Enums_db.find({key: {$in: ['COUNTRY_LIST', 'SUPPORTED_COUNTRIES', 'COUNTRY_DIAL']}}).exec((e, docs) => {
            _.each(docs, (doc) => {
                switch (doc.key) {
                    case 'COUNTRY_LIST':
                        this._cache.COUNTRY_LIST = doc.value;
                        break
                    case 'SUPPORTED_COUNTRIES':
                        this._cache.SUPPORTED_COUNTRIES = doc.value;
                        break;
                    case 'COUNTRY_DIAL':
                        this._cache.COUNTRY_DIAL = doc.value;
                        break;
                }
            })

            cb && cb()
        })
    }

    init(cb) {
        this.refresh(cb)
        setInterval(() => {
            this.refresh()
        }, 3000)
    }
}
module.exports = new Enums()

module.exports = new Enums()

另外,我有枚举文件:

const cache = require('./utils/cache')

module.exports = {
    COUNTRY_LIST: cache.cache.COUNTRY_LIST,
    SUPPORTED_COUNTRIES: cache.SUPPORTED_COUNTRIES,
    COUNTRY_DIAL: cache.COUNTRY_DIAL,
    OTHER_ENUM: []
}

打印示例文件:

const {COUNTRY_LIST} = require('../enums')

setInterval(function () {
    console.log(COUNTRY_LIST)
}, 3000)

这样我总是得到相同的值,即使它们在cahche类中被刷新和编辑。 我已经看到,如果我只导出缓存,并将print打印为:cache.COUNTRY_LIST,那么它将起作用。如何解决它,因此打印只会从枚举中打印COUNTRY_LIST属性,并且将通过ref从缓存文件中访问它?

感谢。

0 个答案:

没有答案