有没有支持ES7语法的轻量级的 Mongodb ORM
发布于 7 年前 作者 TongChia 3540 次浏览 来自 问答

我找到了这个 Mongorito https://github.com/vadimdemedes/mongorito 但是有很多不完美, v3 版本还不支持 aggregate

如果不考虑对 Schema 的支持, 就是不要 ORM, 用 monk 倒是挺不错的 https://github.com/Automattic/monk

有没有轻量级的 添加 Schema 支持的模块.

其实主要依赖 ORM的 数据验证 和 hook, 大家有没有好的推荐?

Mongoose 的插件系统就不奢求了, 要用轻量级模块就只能自己写类似的东西了吧.

又找到个好东西 Object Model 嘎嘎~ http://objectmodel.js.org/ 模型/类型验证的问题解决了

monk 和 objectmodel 整合一下加 hook 功能就能代替 mongoose 了, 配合 Koa2 杠杠的.

6 回复

记得有个大神写过一个mongolass。

来自酷炫的 CNodeMD

@xrr20160322 啊~ 棒棒的. 已star, fork. 在研究 但我还是想整合 monk 和 objectmodel 加 state-machine 建立 Model, 有可能的话把 mquery 也整合进来. 这几样东西独立使用都很有用. 我先抽空写的Demo试试 … 为了 ES6/7 语法下好好使用 Mongo 我也是拼了

Mongoose 不可以使用es7??? await User.findById

@AnzerWall 可以啊 要用 User.findById(’’).exec() Mongoose 太重了, 而且聚合查询结果还是要自己处理. 不优雅

@TongChia 然而并不需要exec就可以了,聚合结构哪些orm不需要自己处理的请务必介绍一下。mongoose的api确实设计得不好

@AnzerWall 就不套用 Model 多简单. 我存的时候根据 Schema 来生成符合标准的数据, 再存. 此时我就保证数据是对的 就 OK 了.

我取的时候如果需要我可以自己 new Model(data); 但大部分场景都不需要!!! 而且想修改下还要toObject(); 你说多不优雅 如果是聚合查询我在{$project}里就可以调整数据结构了, 那就更不需要了. Mongoose 的 Schema 定义的 虚拟值 验证 pre/post hook… 等. 在项目越来越复杂的时候, 都不需要了, 都有我们自己的方法, 用的最多的就是 pre(‘save’ 了 而这些东西无不加重了 Model 复杂度, 它还把 Model 自动套用到 find 结果里… 太不优雅了.

还有 Mongoose 的查询套用 mquery, 其实直接用 mquery 更简单直观.

所以Mongoose 这东西也就刚开始用的时候觉得爽.

回到顶部