# service-auth 权限角色 因为使用框架的多租户模式有bug,但是框架又没改,所以需要手动在服务器把 naf-framework-mongoose>lib>plugin>egg-multi-tenancy>app>extend>application中 loadModel2改为下面代码 > const loadModel2 = (app, tenant) => { app.logger.info(`[multi-tenancy] Load tenant models for ${tenant}`); const model = {}; _.forEach(app.model, (val, key) => { val = getModel(val, key) if(!val||val.length<=0){ app.logger.debug(`[multi-tenancy] catalog have error! model not found`) return; } for (const obj of val) { _.forIn(obj,(v,k)=>{ const modelName = `${v.modelName}@${tenant}`; const collName = `${v.collection.name}`; const multiTenancy = v.schema.get('multi-tenancy'); if (multiTenancy) { app.logger.debug(`[multi-tenancy] ${modelName} loaded`); const schema = v.schema.clone(); schema.set('x-tenant', tenant); schema.plugin(multiTenancyPlugin, app.config.multiTenancy); model[k] = v.db.model(modelName, schema, collName); } else { app.logger.debug(`[multi-tenancy] skip ${v.modelName}, schema not enable multi-tenancy.`); model[k] = v; } }) } }); return model; }; 并添加 > const getModel = (object, key) => { let res = []; if(!_.isFunction(object)) { // 如果不是function,说明这是子目录,需要将object中每个key作为自己的新key,否则会导致model丢失 _.forIn(object, (v,k)=>{ res = [...res,...getModel(v,k)] }) } else { // 根目录,直接搞 const obj = {}; obj[key] = object; res.push(obj); }; return res; } ## QuickStart see [egg docs][egg] for more detail. ### Development ```bash $ npm i $ npm run dev $ open http://localhost:7001/ ``` ### Deploy ```bash $ npm start $ npm stop ``` ### npm scripts - Use `npm run lint` to check code style. - Use `npm test` to run unit test. - Use `npm run autod` to auto detect dependencies upgrade, see [autod](https://www.npmjs.com/package/autod) for more detail. [egg]: https://eggjs.org