在express app.js中要求使用所有模型的猫鼬

时间:2020-04-11 09:05:15

标签: javascript node.js express

在我的express app的app.js中,每次创建模型时我总是必须包含模型

require('./models/Users')
require('./models/Projects')

有办法避免这种情况吗?像require('./models/*)之类的东西?

3 个答案:

答案 0 :(得分:1)

使用原生nodejs,您可以阅读directory并加载/请求模块dynamically

const fs = require("fs");
const path = require("path");
const models = fs.readdirSync("./models/");
models.forEach((dir) => {
  if (fs.statSync(dir).isFile) require(path.join("./models/", dir));
});

实用程序:

const getModels = (dir) => {
  return fs
    .readdirSync(dir)
    .filter((file) => fs.statSync(file).isFile)
    .map((file) => require(path.join("./models/", file)));
};
module.exports ={getModels}

//使用方法

const models = getModels("./models/")

答案 1 :(得分:0)

创建一个单独的文件,其中将包含所有导出的模块文件,并且仅在对象上导出并在需要时使用它,

答案 2 :(得分:0)

使用glob获取模型路径中的所有文件

var glob = require( 'glob' )
  , path = require( 'path' );

glob.sync( './models/**/*.js' ).forEach( function( file ) {
  require( path.resolve( file ) );
});