|
il y a 2 ans | |
---|---|---|
.github | il y a 3 ans | |
app | il y a 3 ans | |
config | il y a 2 ans | |
test | il y a 3 ans | |
.autod.conf.js | il y a 3 ans | |
.eslintignore | il y a 3 ans | |
.eslintrc | il y a 3 ans | |
.gitignore | il y a 3 ans | |
.travis.yml | il y a 3 ans | |
README.md | il y a 3 ans | |
app.js | il y a 3 ans | |
appveyor.yml | il y a 3 ans | |
ecosystem.config.js | il y a 3 ans | |
package.json | il y a 3 ans | |
server.js | il y a 3 ans | |
tenant.md | il y a 3 ans |
食堂服务端
naf-framework-mongoose => lib => plugin => egg-multi-tenancy => app => extend => application.js
const loadModel2 = (app, tenant) => { app.logger.info(`[multi-tenancy] Load tenant models for ${tenant}`); let model = {}; const setModel = (val,key) =>{ const obj = {}; const modelName = `${val.modelName}@${tenant}`; const collName = `${val.collection.name}`; const multiTenancy = val.schema.get('multi-tenancy'); if (multiTenancy) { app.logger.debug(`[multi-tenancy] ${modelName} loaded`); const schema = val.schema.clone(); schema.set('x-tenant', tenant); schema.plugin(multiTenancyPlugin, app.config.multiTenancy); obj[key] = val.db.model(modelName, schema, collName); } else { app.logger.debug(`[multi-tenancy] skip ${val.modelName}, schema not enable multi-tenancy.`); obj[key] = val; } return obj; } _.forEach(app.model, (val, key) => { const nval = getAllModel(val); // 文件夹分层级后,val不再只是Function,也有可能是Object,添加个方法,获取所有model if(!_.isArray(nval)) { let mod = {}; mod = setModel(nval,key); model = {...model,...mod}; } else { let mods = {}; mods[key] = {}; for (const model of nval) { const nkey = _.upperFirst(model.modelName); let mod = setModel(model,nkey); mods[key] = {...mods[key],...mod}; } model = {...model,...mods}; } }); return model; }; const getAllModel = data => { if(_.isFunction(data)) return data; const keys = Object.keys(data); const arr = []; for (const key of keys) { const model = data[key]; if(_.isFunction(model)) arr.push(model) else arr.push(...getAllModel(model)) } return arr; }