monsqlize 1.0.5 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +74 -183
- package/README.md +438 -80
- package/index.d.ts +362 -8
- package/lib/index.js +180 -0
- package/lib/model/features/defaults.js +160 -0
- package/lib/model/features/populate.js +567 -0
- package/lib/model/features/relations.js +119 -0
- package/lib/model/features/virtuals.js +218 -0
- package/lib/model/index.js +366 -33
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# 变更日志 (CHANGELOG)
|
|
2
2
|
|
|
3
|
-
> **说明**:
|
|
4
|
-
> **最后更新**:
|
|
3
|
+
> **说明**: 版本概览摘要,详细变更见 [changelogs/](./changelogs/) 目录
|
|
4
|
+
> **最后更新**: 2026-01-08
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -9,163 +9,101 @@
|
|
|
9
9
|
|
|
10
10
|
| 版本 | 日期 | 变更摘要 | 详细 |
|
|
11
11
|
|------|------|---------|------|
|
|
12
|
+
| [v1.0.6](./changelogs/v1.0.6.md) | 2026-01-08 | 文档完善:新增 ObjectId 自动转换文档 + 验证所有 v1.3.0+ 功能文档 | [查看](./changelogs/v1.0.6.md) |
|
|
13
|
+
| [v1.0.5](./changelogs/v1.0.5.md) | 2026-01-08 | Schema 验证默认启用 + Model 自动加载机制 + 类型定义完善 | [查看](./changelogs/v1.0.5.md) |
|
|
14
|
+
| [v1.0.4](./changelogs/v1.0.4.md) | 2026-01-07 | 新功能:虚拟字段、默认值 + Bug 修复:嵌套 Populate + 测试改进 | [查看](./changelogs/v1.0.4.md) |
|
|
12
15
|
| [v1.0.3](STATUS.md#v103) | 2025-12-31 | 新增 Model 层(Schema 验证、自定义方法、生命周期钩子、自动时间戳) | [查看](STATUS.md#v103) |
|
|
13
16
|
| [v1.0.2](STATUS.md#v102) | 2025-12-30 | 新增批量操作方法(deleteBatch/updateBatch) | [查看](STATUS.md#v102) |
|
|
14
17
|
| [v1.0.1](STATUS.md#v101) | 2025-12-29 | 稳定版本,生产就绪 | [查看](STATUS.md#v101) |
|
|
15
|
-
| [v1.0.0](
|
|
18
|
+
| [v1.0.0](./changelogs/v1.0.0.md) | 2025-12-03 | 正式发布,生产就绪,已发布到 npm | [查看](./changelogs/v1.0.0.md) |
|
|
16
19
|
|
|
17
20
|
---
|
|
18
21
|
|
|
19
|
-
##
|
|
20
|
-
|
|
21
|
-
### 新增功能 ✨
|
|
22
|
-
|
|
23
|
-
**Model 层** - ORM 式的数据模型功能
|
|
24
|
-
- ✅ **Schema 验证** - 集成 schema-dsl,自动验证数据格式
|
|
25
|
-
- ✅ **自定义方法** - instance 方法注入到文档,static 方法挂载到 Model
|
|
26
|
-
- ✅ **生命周期钩子** - before/after 钩子支持(find/insert/update/delete)
|
|
27
|
-
- ✅ **索引自动创建** - 初始化时自动创建索引
|
|
28
|
-
- ✅ **枚举配置** - 可在 schema 中引用的枚举定义
|
|
29
|
-
- ✅ **自动时间戳** - 自动管理 createdAt/updatedAt,支持自定义字段名
|
|
30
|
-
|
|
31
|
-
### 核心 API 🔧
|
|
32
|
-
|
|
33
|
-
```javascript
|
|
34
|
-
// 定义 Model
|
|
35
|
-
Model.define('users', {
|
|
36
|
-
schema: (dsl) => dsl({ username: 'string!', email: 'email!' }),
|
|
37
|
-
methods: (model) => ({
|
|
38
|
-
instance: { checkPassword(pwd) { return this.password === pwd; } },
|
|
39
|
-
static: { async findByUsername(name) { return await model.findOne({ username: name }); } }
|
|
40
|
-
}),
|
|
41
|
-
hooks: (model) => ({
|
|
42
|
-
insert: { before: async (ctx, docs) => ({ ...docs, createdAt: new Date() }) }
|
|
43
|
-
}),
|
|
44
|
-
indexes: [{ key: { username: 1 }, unique: true }]
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
// 使用 Model
|
|
48
|
-
const User = msq.model('users');
|
|
49
|
-
const user = await User.findByUsername('admin');
|
|
50
|
-
if (user.checkPassword('secret')) console.log('登录成功');
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
### 测试覆盖 ✅
|
|
22
|
+
## 变更统计
|
|
54
23
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
- Hooks:6个
|
|
59
|
-
- 测试覆盖率:~90%
|
|
24
|
+
| 版本系列 | 版本数 | 主要改进方向 |
|
|
25
|
+
|---------|-------|------------|
|
|
26
|
+
| v1.0.x | 7 | Model 层完善、Schema 验证、自动加载、批量操作、文档完善 |
|
|
60
27
|
|
|
61
|
-
|
|
28
|
+
---
|
|
62
29
|
|
|
63
|
-
|
|
64
|
-
- 新增 `docs/model-methods-design.md` - 设计文档(295行)
|
|
65
|
-
- 新增 `examples/model/basic.js` - 基础使用示例
|
|
66
|
-
- 新增 `examples/model/advanced.js` - 高级功能示例
|
|
67
|
-
- 新增 TypeScript 类型定义(+300行)
|
|
68
|
-
- 更新 `README.md`、`docs/INDEX.md`
|
|
30
|
+
## 里程碑版本
|
|
69
31
|
|
|
70
|
-
###
|
|
32
|
+
### v1.0.6 - 文档完善 📚
|
|
71
33
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
- ✅ **方法注入** - 自动注入到查询结果,使用自然
|
|
75
|
-
- ✅ **TypeScript 支持** - 完整的泛型类型定义
|
|
76
|
-
- ✅ **灵活配置** - 所有选项都可选,渐进式采用
|
|
34
|
+
**发布日期**: 2026-01-08
|
|
35
|
+
**重要性**: ⭐⭐⭐
|
|
77
36
|
|
|
78
|
-
|
|
37
|
+
**核心成就**:
|
|
38
|
+
- ✅ 文档完整性达到 100%
|
|
39
|
+
- ✅ 新增 ObjectId 自动转换完整文档(600行)
|
|
40
|
+
- ✅ 验证所有 v1.3.0+ 功能都有文档
|
|
79
41
|
|
|
80
|
-
|
|
81
|
-
- ✅ 需要扩展文档方法的场景
|
|
82
|
-
- ✅ 需要生命周期控制的场景
|
|
83
|
-
- ✅ 需要类 ORM 体验的场景
|
|
42
|
+
**详细信息**: [查看 changelogs/v1.0.6.md](./changelogs/v1.0.6.md)
|
|
84
43
|
|
|
85
44
|
---
|
|
86
45
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
### 新增功能 ✨
|
|
46
|
+
### v1.0.5 - Model 层易用性提升 🚀
|
|
90
47
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
- 流式查询,恒定内存占用(12KB)
|
|
94
|
-
- 支持进度监控(实时百分比)
|
|
95
|
-
- 4种错误处理策略(stop/skip/collect/retry)
|
|
96
|
-
- 自动重试机制
|
|
97
|
-
- 性能:36,385 条/秒(100万条数据实测)
|
|
98
|
-
|
|
99
|
-
- ✅ **updateBatch** - 批量更新方法
|
|
100
|
-
- 流式查询,恒定内存占用(12KB)
|
|
101
|
-
- 支持进度监控(实时百分比)
|
|
102
|
-
- 支持所有 MongoDB 更新操作符
|
|
103
|
-
- 4种错误处理策略 + 自动重试
|
|
104
|
-
- 性能:35,365 条/秒(100万条数据实测)
|
|
48
|
+
**发布日期**: 2026-01-08
|
|
49
|
+
**重要性**: ⭐⭐⭐⭐
|
|
105
50
|
|
|
106
|
-
|
|
51
|
+
**核心特性**:
|
|
52
|
+
- ✅ Schema 验证默认启用(提升数据质量)
|
|
53
|
+
- ✅ Model 自动加载机制(减少样板代码)
|
|
54
|
+
- ✅ 类型定义完善
|
|
107
55
|
|
|
108
|
-
|
|
109
|
-
批量操作性能(100万条数据测试):
|
|
110
|
-
- insertBatch: 49,493 条/秒
|
|
111
|
-
- deleteBatch: 36,385 条/秒
|
|
112
|
-
- updateBatch: 35,365 条/秒
|
|
113
|
-
- 内存占用: 恒定 12KB
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### 测试覆盖 ✅
|
|
56
|
+
**详细信息**: [查看 changelogs/v1.0.5.md](./changelogs/v1.0.5.md)
|
|
117
57
|
|
|
118
|
-
|
|
119
|
-
- 性能测试通过(100万条数据)
|
|
120
|
-
- 测试覆盖率 > 90%
|
|
58
|
+
---
|
|
121
59
|
|
|
122
|
-
###
|
|
60
|
+
### v1.0.4 - 虚拟字段与 Bug 修复 ✨
|
|
123
61
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
- 新增 `examples/batch-operations.examples.js` - 8个真实业务场景
|
|
127
|
-
- 更新 `README.md` 和 `docs/INDEX.md`
|
|
62
|
+
**发布日期**: 2026-01-07
|
|
63
|
+
**重要性**: ⭐⭐⭐⭐
|
|
128
64
|
|
|
129
|
-
|
|
65
|
+
**核心特性**:
|
|
66
|
+
- ✅ 虚拟字段(计算属性)
|
|
67
|
+
- ✅ 默认值(插入时自动填充)
|
|
68
|
+
- ✅ 嵌套 Populate Bug 修复
|
|
130
69
|
|
|
131
|
-
|
|
132
|
-
- ✅ **架构最简** - 单一流式查询实现,数据一致性有保证
|
|
133
|
-
- ✅ **内存优化** - 流式查询,无论处理多少数据,内存占用恒定 12KB
|
|
134
|
-
- ✅ **错误处理完善** - 4种策略 + 自动重试,适应不同业务场景
|
|
70
|
+
**详细信息**: [查看 changelogs/v1.0.4.md](./changelogs/v1.0.4.md)
|
|
135
71
|
|
|
136
72
|
---
|
|
137
73
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
### 版本说明
|
|
74
|
+
### v1.0.0 - 正式发布 🎉
|
|
141
75
|
|
|
142
|
-
-
|
|
143
|
-
|
|
144
|
-
- 多级缓存系统
|
|
145
|
-
- 事务支持
|
|
146
|
-
- 分布式部署支持
|
|
147
|
-
- Change Streams 实时监听
|
|
148
|
-
- 慢查询日志
|
|
149
|
-
- 业务级分布式锁
|
|
150
|
-
- SSH 隧道支持
|
|
76
|
+
**发布日期**: 2025-12-03
|
|
77
|
+
**重要性**: ⭐⭐⭐⭐⭐
|
|
151
78
|
|
|
152
|
-
|
|
79
|
+
**核心成就**:
|
|
80
|
+
- ✅ 已发布到 npm
|
|
81
|
+
- ✅ 生产就绪
|
|
82
|
+
- ✅ 企业级质量(96/100 A+)
|
|
83
|
+
- ✅ 1000+ 测试用例
|
|
84
|
+
- ✅ 77%+ 测试覆盖率
|
|
153
85
|
|
|
154
|
-
|
|
86
|
+
**详细信息**: [查看 changelogs/v1.0.0.md](./changelogs/v1.0.0.md)
|
|
155
87
|
|
|
156
|
-
|
|
88
|
+
---
|
|
157
89
|
|
|
158
|
-
|
|
159
|
-
- 企业级质量标准(96/100 A+)
|
|
160
|
-
- 已发布到 npm
|
|
90
|
+
## 详细变更文档
|
|
161
91
|
|
|
162
|
-
|
|
92
|
+
> **说明**: 详细变更文档位于 `changelogs/` 目录
|
|
163
93
|
|
|
164
|
-
|
|
94
|
+
```
|
|
95
|
+
changelogs/
|
|
96
|
+
├── README.md # 变更文档说明
|
|
97
|
+
├── TEMPLATE.md # 变更文档模板
|
|
98
|
+
├── v1.0.0.md # v1.0.0 详细变更
|
|
99
|
+
├── v1.0.4.md # v1.0.4 详细变更
|
|
100
|
+
└── v1.0.5.md # v1.0.5 详细变更
|
|
101
|
+
```
|
|
165
102
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
103
|
+
**注意**:
|
|
104
|
+
- `changelogs/` 目录包含所有版本的详细变更文档
|
|
105
|
+
- 本文件(CHANGELOG.md)仅提供版本概览和里程碑摘要
|
|
106
|
+
- 需求状态追踪见 [STATUS.md](./STATUS.md)
|
|
169
107
|
|
|
170
108
|
---
|
|
171
109
|
|
|
@@ -173,25 +111,22 @@ if (user.checkPassword('secret')) console.log('登录成功');
|
|
|
173
111
|
|
|
174
112
|
### 添加新版本的步骤
|
|
175
113
|
|
|
176
|
-
1.
|
|
114
|
+
1. **创建详细变更文档**
|
|
177
115
|
```bash
|
|
178
|
-
cp
|
|
179
|
-
#
|
|
116
|
+
cp changelogs/TEMPLATE.md changelogs/vX.Y.Z.md
|
|
117
|
+
# 填充详细变更信息
|
|
180
118
|
```
|
|
181
119
|
|
|
182
|
-
2. **更新
|
|
183
|
-
- 在"发布计划"表格添加新版本行
|
|
184
|
-
- 添加版本章节(### vX.Y.Z)
|
|
185
|
-
- 在版本表格添加需求行
|
|
186
|
-
- 链接到 plans/ 文档(如有)
|
|
187
|
-
|
|
188
|
-
3. **更新 CHANGELOG.md**
|
|
120
|
+
2. **更新 CHANGELOG.md**(本文件)
|
|
189
121
|
- 在"版本概览"表格最上方添加新行
|
|
190
|
-
- 格式:`| [vX.Y.Z](
|
|
122
|
+
- 格式:`| [vX.Y.Z](./changelogs/vX.Y.Z.md) | 日期 | 摘要 | [查看](./changelogs/vX.Y.Z.md) |`
|
|
123
|
+
|
|
124
|
+
3. **更新 STATUS.md**(如需要)
|
|
125
|
+
- 添加版本章节和需求状态
|
|
191
126
|
|
|
192
127
|
4. **提交变更**
|
|
193
128
|
```bash
|
|
194
|
-
git add
|
|
129
|
+
git add CHANGELOG.md changelogs/vX.Y.Z.md STATUS.md
|
|
195
130
|
git commit -m "docs: 发布 vX.Y.Z"
|
|
196
131
|
```
|
|
197
132
|
|
|
@@ -210,58 +145,14 @@ if (user.checkPassword('secret')) console.log('登录成功');
|
|
|
210
145
|
|
|
211
146
|
---
|
|
212
147
|
|
|
213
|
-
## 快速导航
|
|
214
|
-
|
|
215
|
-
### 当前版本
|
|
216
|
-
|
|
217
|
-
- **v1.0.1**: [查看详情](STATUS.md#v101)
|
|
218
|
-
- **v1.0.0**: [查看详情](STATUS.md#v100)
|
|
219
|
-
|
|
220
|
-
---
|
|
221
|
-
|
|
222
|
-
## 里程碑版本
|
|
223
|
-
|
|
224
|
-
### v1.0.0 - 正式发布 🎉
|
|
225
|
-
|
|
226
|
-
**发布日期**: 2025-12-03
|
|
227
|
-
**重要性**: ⭐⭐⭐⭐⭐
|
|
228
|
-
|
|
229
|
-
**核心成就**:
|
|
230
|
-
- ✅ 已发布到 npm
|
|
231
|
-
- ✅ 生产就绪
|
|
232
|
-
- ✅ 企业级质量(96/100 A+)
|
|
233
|
-
- ✅ 1000+ 测试用例
|
|
234
|
-
- ✅ 77%+ 测试覆盖率
|
|
235
|
-
|
|
236
|
-
**详细信息**: [查看 STATUS.md](STATUS.md#v100)
|
|
237
|
-
|
|
238
|
-
---
|
|
239
|
-
|
|
240
|
-
## 详细变更文档
|
|
241
|
-
|
|
242
|
-
> **说明**: 详细变更文档位于 `changelogs/` 目录
|
|
243
|
-
|
|
244
|
-
```
|
|
245
|
-
changelogs/
|
|
246
|
-
├── TEMPLATE.md # 变更文档模板
|
|
247
|
-
└── v1.0.0.md # v1.0.0 详细变更
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
**注意**:
|
|
251
|
-
- changelogs/ 目录包含历史详细变更文档
|
|
252
|
-
- 新版本应优先使用 plans/ 目录存储需求文档
|
|
253
|
-
- STATUS.md 是主要的需求状态追踪文档
|
|
254
|
-
|
|
255
|
-
---
|
|
256
|
-
|
|
257
148
|
## 相关文档
|
|
258
149
|
|
|
259
150
|
- [STATUS.md](./STATUS.md) - 需求状态追踪
|
|
260
|
-
- [
|
|
151
|
+
- [changelogs/](./changelogs/README.md) - 详细变更文档目录
|
|
261
152
|
- [README.md](./README.md) - 项目说明
|
|
262
|
-
- [
|
|
153
|
+
- [docs/](./docs/INDEX.md) - API 文档
|
|
263
154
|
|
|
264
155
|
---
|
|
265
156
|
|
|
266
|
-
**最后更新**:
|
|
157
|
+
**最后更新**: 2026-01-08
|
|
267
158
|
|