如何在JSON中添加变量键?

时间:2019-04-25 04:11:21

标签: node.js json

我需要读取一批文件,并将文件名制成JSON数组。 this.moduleFiles.modulename = modules下面的代码不正确。

var fs = require("fs");
var loadRoute = {
  path : './api/modules/',
   moduleFiles : {},

   listDir : function(dir){
    console.log(dir);
    var fileList = fs.readdirSync(dir,'utf-8');
    for(var i=0;i<fileList.length;i++) {
        var stat = fs.lstatSync(dir + fileList[i]);
        if (stat.isDirectory()) {
            this.listDir(dir + fileList[i]  + '/');
        } else {
            this.loadRoute(dir + fileList[i]);
        }
    }
  },
  loadRoute : function(routeFile){
    // console.log('~~~~~~~~~~');
    console.log(routeFile);
    let modulename = routeFile.substring(0,routeFile.lastIndexOf('.'));
    modulename = modulename.substr(modulename.lastIndexOf('/') + 1)
    let modules = require('./modules/' + modulename);
    this.moduleFiles.modulename = modules

  },
  init : function(path){
    this.path = path?path:this.path;
    this.listDir(this.path);
    return this.moduleFiles;
  }
};

let x = loadRoute.init();
console.log(x);

我只会得到

{ modulename: {..} } }

预期结果应该

{user: {...}, dep: {...}}

usr和dep是来自文件名的模块名。有什么建议吗?非常感谢!

2 个答案:

答案 0 :(得分:0)

如果要从目录中获取所有模块,请使用npm软件包require-all

listDir : function(dir){
   this.moduleFiles = require('require-all')({
      dirname     :  dir,
      filter      :  /(.+routes)\.js$/, // some filter if you want
      excludeDirs :  /^\.(git|svn)$/,
      recursive   : true
    });
}

答案 1 :(得分:0)

this.moduleFiles [{variable}] =模块,则可以通过this.moduleFiles。{variable}

获得

this.moduleFiles.modulename =与this.moduleFiles ['modulename']相同的模块 所以你无法得到想要的东西