使用mongodb在api中存储约束的最佳位置在哪里

时间:2010-08-25 13:58:51

标签: mongodb

我正在编写一个使用MongoDB作为存储后端的API。假设API允许消费者查询即将发生的事件。假设某些事件是私有的,对于当前用户,不应该出现在结果中。 我应该:

  1. 在API级别实现此功能。 API代码将负责这些检查。优势似乎是如果我更改存储引擎(不太可能),业务代码将完好无损。
  2. 将其实现为存储的javascript函数。

1 个答案:

答案 0 :(得分:0)

在API级别,由于您提到的原因:您独立于应用程序的基础存储机制。

一个好的准则是持久性无知:使您的业务逻辑尽可能少地了解存储机制。这意味着业务逻辑也不应位于您的存储层中。因此,存储过程或存储的JavaScript函数不应包含业务逻辑。这样做的一些优点:

  • 您可以轻松地交换基础数据库,而无需在新数据库中重新实现业务逻辑。
  • 您的所有业务逻辑都包含在您的应用程序层中,使代码库更易于理解和调试。

您应该在MongoDB中存储的唯一功能是“实用程序”功能;简化常见操作的函数,例如字符串操作,但不以任何方式与业务逻辑相关联。