【发布时间】:2016-07-05 14:51:05
【问题描述】:
我正在编写一个小型 Clojure 应用程序,它与具有 2-3 个不同集合的 MongoDB 数据库进行大量交互。
我来自 OOP/Ruby/ActiveRecord 背景,其中标准做法是为每个数据模型创建一个类并授予每个类访问数据库的权限。我已经开始在我的 clojure 项目中做同样的事情。每个“数据模型”都有一个命名空间,每个命名空间都有自己的数据库连接和 CRUD 函数。但是,这感觉不是很实用或类似 clojure,我想知道是否有更惯用的方法,例如使用 data 或 database 命名空间和 get-post 之类的功能,并限制只能访问该命名空间的数据库。
这似乎有利于将数据库客户端依赖项隔离到一个命名空间,并将纯函数与具有副作用的函数分开。
另一方面,我将有一个命名空间,我需要从我的应用程序的许多不同部分引用它,而拥有一个名为“数据”的命名空间对我来说似乎很奇怪。
在 Clojure 中是否有一种传统的惯用方式?
【问题讨论】:
标签: clojure functional-programming