在我的express app的app.js中,每次创建模型时我总是必须包含模型
require('./models/Users')
require('./models/Projects')
有办法避免这种情况吗?像require('./models/*)
之类的东西?
答案 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 ) );
});