|
@@ -2,6 +2,56 @@
|
|
|
|
|
|
权限角色
|
|
权限角色
|
|
|
|
|
|
|
|
+因为使用框架的多租户模式有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
|
|
## QuickStart
|
|
|
|
|
|
<!-- add docs here for user -->
|
|
<!-- add docs here for user -->
|
|
@@ -30,4 +80,4 @@ $ npm stop
|
|
- Use `npm run autod` to auto detect dependencies upgrade, see [autod](https://www.npmjs.com/package/autod) for more detail.
|
|
- Use `npm run autod` to auto detect dependencies upgrade, see [autod](https://www.npmjs.com/package/autod) for more detail.
|
|
|
|
|
|
|
|
|
|
-[egg]: https://eggjs.org
|
|
|
|
|
|
+[egg]: https://eggjs.org
|