Skip to content

Commit e5aed2e

Browse files
committed
fix: support customize ns delimiter
1 parent 2bda7e5 commit e5aed2e

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

src/config/config.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,10 @@ export const oauthProvider = {
8181
toBoolean(loadEnv(`${toUpperSnakeCase(provider)}_GET_TOKEN_USE_QUERY`)),
8282
};
8383

84+
export const namespace = {
85+
delimiter: loadEnv('NS_DELIMITER', { default: '/' }), // 命名空间树形路径分隔符
86+
};
87+
8488
export const defaultUser = {
8589
username: loadEnv('DEFAULT_USER_USERNAME', { default: 'admin' }),
8690
password: loadEnv('DEFAULT_USER_PASSWORD', { default: '[email protected]' }), // 注意:实际应用中请使用更安全的密码处理方式

src/mongo/helper.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import { get, isArray, isNil, merge, set } from 'lodash';
22
import mongoose, { Schema } from 'mongoose';
33
import mongooseHidden from 'mongoose-hidden';
44

5+
import { namespace } from 'src/config';
6+
57
export function helper(schema: Schema): Schema {
68
schema.set('toJSON', { virtuals: true });
79
schema.set('toObject', { virtuals: true });
@@ -83,7 +85,10 @@ export function buildMongooseQuery(query) {
8385
match = /(.+)_(tree)/.exec(key);
8486
if (match) {
8587
path = [match[1]];
86-
val = new RegExp(`^${val}(\\/|$)`);
88+
const delimiter = namespace.delimiter;
89+
// 转义分隔符中的特殊字符,用于正则表达式
90+
const escapedDelimiter = delimiter.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
91+
val = new RegExp(`^${val}(${escapedDelimiter}|$)`);
8792
}
8893

8994
// `_gt`, `_lt`, `_gte` `_lte` `_ne` `_size`

0 commit comments

Comments
 (0)