|
vor 3 Jahren | |
---|---|---|
.github | vor 4 Jahren | |
app | vor 4 Jahren | |
config | vor 4 Jahren | |
test | vor 4 Jahren | |
.autod.conf.js | vor 4 Jahren | |
.eslintignore | vor 4 Jahren | |
.eslintrc | vor 4 Jahren | |
.gitignore | vor 4 Jahren | |
.travis.yml | vor 4 Jahren | |
README.md | vor 4 Jahren | |
appveyor.yml | vor 4 Jahren | |
ecosystem.config.js | vor 4 Jahren | |
package.json | vor 4 Jahren | |
server.js | vor 3 Jahren |
权限角色
因为使用框架的多租户模式有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; }
see egg docs for more detail.
$ npm i
$ npm run dev
$ open http://localhost:7001/
$ npm start
$ npm stop
npm run lint
to check code style.npm test
to run unit test.npm run autod
to auto detect dependencies upgrade, see autod for more detail.