如何在RavenDB中使用折扣

时间:2013-07-04 13:36:02

标签: ravendb

我想在RavenDB中实现产品折扣功能。

产品文档:

{
  "RegularPrice": 10.00,
  "ReferencePrice": 0.0,
  "Categories": [
    "A",
    "B",
    "C"
  ]
}

现在举例来说,我想给“A”类中的所有产品打折。 所以我在折扣率文件中按照折扣率对类别进行了映射:

{
  "ProductDiscount": {
    "A": 20.0
  }
}

问题是如何在以下情况下计算ReferencePrice并存储或更新它:

  • 是否添加了新产品?
  • RegularPrice已更新?
  • 折扣文件已更新?

似乎我应该用触发器来处理它。但我不确定!

1 个答案:

答案 0 :(得分:1)

我不确定这种模式是否会成功。您如何将产品与折扣相关联?它们按类别相关,但使用此模型,它是多对多关系。这是你的意图吗?如果是这样,您将如何处理可能适用于同一产品的多项折扣?

如果你要这样离开,你可以考虑的一个策略是multi-map / reduce来计算价格,Indexed Properties Bundle将结果写回文档。但这是一个相当复杂的设置。

通过对每个类别进行一次折扣,并将折扣定义为类别文档的一部分,您可以更轻松地实现这一目标。然后,您可以使用LoadDocument在编制索引时为类别提取折扣。

您需要尝试一个符合您可以维护的要求的模型。

其他想法:

  • 是的,您可以使用trigger,但这会将服务器端作为插件运行。可能很难维护。

  • 您可以在应用类别折扣的任何时候手动发送scripted patch request。新文档和对现有文档的编辑必须在您自己的代码中手动完成。

  • 您可以完全退出产品的计算价格。每当加载产品时,您都会包含折扣并动态计算价格。

还有其他人,我敢肯定。这实际上取决于您的特定应用程序中的功能。