1

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

产品文档:

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

例如,现在我想为“A”类的所有产品打折。因此,我在折扣文档中将类别映射到折扣率,如下所示:

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

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

  • 添加了新产品?
  • RegularPrice 更新了吗?
  • 折扣文件更新了吗?

看来我应该用触发器来处理这个问题。但我不确定!

4

1 回答 1

1

我不确定这个模型是否会站得住脚。您将如何将产品与折扣联系起来?它们是按类别相关的,但在此模型中,它是多对多的关系。这是你想要的吗?如果是这样,您将如何处理可能适用于同一产品的多个折扣?

如果您要这样保留它,您可以考虑的一种策略是使用 multi-map/reduce 来计算价格,并使用Indexed Properties Bundle将结果写回文档。但这是一个相当复杂的设置。

您可以通过为每个类别设置一个折扣并将折扣定义为类别文档的一部分来简化此操作。然后,您可以在索引时使用LoadDocument为类别提供折扣。

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

其他想法:

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

  • 您可以在任何时候应用类别折扣时手动发送脚本化补丁请求。必须在您自己的代码中手动完成新文档和对现有文档的编辑。

  • 您可以完全不考虑产品的计算价格。每当加载产品时,您都会包含折扣并即时计算价格。

还有其他的,我敢肯定。这实际上取决于您的特定应用程序中的工作原理。

于 2013-07-06T01:00:52.387 回答