https://github.com/jysperm/Mabolo
目前实现的功能:
- 创建一个 Model 并关联到一个集合,可以在 Model 上定义静态方法,也可以为 Model 的实例(document)定义实例方法
- 将数据库请求排队直到成功连接到 MongoDB
- findById 系列方法
尚未实现的功能:
- 还不支持在已有的 document 上调用 save 方法,需要实现一个类似 mongoose 的
__v
来防止出现冲突 - 目前实际上目前并不会依据创建 Model 时定义的 schema 对数据进行验证,准备实现一个基于中间件(和 mongoose 类似)的验证机制
- 实现一个比 mongoose 更好的关系系统,来定义 Model 之间的嵌入关系或引用关系
PS: 我觉得我这个名字起得还是挺好的。
what’s the meaning of Mabolo?
要是有个 update的middleware就好了
验证器的部分已经写完了~
https://github.com/jysperm/Mabolo/compare/v0.1.3…v0.2.0 Mabolo 0.2 发布了,目前在嵌入式文档的支持方面已经接近 Mongoose了
为什么要这个轮子? 和 Mongoose 比有什么好处?
主要是 mongoose 的一些小问题让我觉得很不爽,比如没办法将一个 Schema 的一部分定义成另一个 Scheme; 以及不能自由地在 document 上添加 Schema 里没有的属性(不保持到数据库,只是为了更方便地向 view 传递数据)
比如没办法将一个 Schema 的一部分定义成另一个 Scheme
是说Schema吧?这个可以的 https://www.npmjs.com/package/mongoose-schema-extend
不能自由地在 document 上添加 Schema 里没有的属性(不保持到数据库,只是为了更方便地向 view 传递数据)
这个功能写一个mongoose插件应该也可以实现
不过支持楼主重复创造轮子亲手操作下,这样才能对有些实现细节更加清晰的掌握
@andyhu 是这样的(这是我和别人的聊天记录):
我可以这么写
Account = mongoose.Schema
tokens: [
Token
]
但是为什么不能这么写呢:
Account = mongoose.Schema
xxoo:
type: Token
报错:
Did you try nesting Schemas? You can only nest using refs or arrays.
或者还有什么其他办法可以把 Token 嵌入为 Account 的一部分,而不是重复写一遍 Token 里的内容。