【发布时间】:2018-04-08 11:49:48
【问题描述】:
我想知道哪个是使用mongonegine python的模型(ORM)的正确方法。
我有一个直接映射到 mongodb json 文档的优惠券类。
class Coupon(Document):
__collection__ = 'coupon'
coupon = StringField()
points = IntField()
@property
def increment(self):
self.points += 1
@property
def decrement(self):
self.points += 1
我发现上面的问题是,我们将行为绑定到数据库访问层,我认为这是不正确的做事方式(我可能完全错了)。
另一种方式 (我认为更有意义) 将业务逻辑委托给通常称为 服务 层的其他层: p>
models.py
class Coupon(Document):
__collection__ = 'coupon'
coupon = StringField()
points = IntField()
services.py
from models import Coupon
def increment_points(c_id):
c_id.points+=1
我想知道哪种是正确的做事方式(假设我们有很多模型)。
问题:我们应该将行为绑定到模型还是将服务层用于业务逻辑?
注意:我添加了标签python,因为我看到很多人在他们的代码库中将行为和业务逻辑绑定到数据库访问层。在任何关于服务的教程中很少听说python web 框架。但它在 Java 和 PHP 中很常见。
【问题讨论】:
-
我觉得你可以看看这个stackoverflow.com/questions/12578908/…讨论
-
@T.Tokic 谢谢,即使在接受的答案中也建议使用服务层。所以我的推理是否正确,第一个设计是错误的?
标签: python mongoengine