我想在RavenDB中实现产品折扣功能。
产品文档:
{
"RegularPrice": 10.00,
"ReferencePrice": 0.0,
"Categories": [
"A",
"B",
"C"
]
}
现在举例来说,我想给“A”类中的所有产品打折。 所以我在折扣率文件中按照折扣率对类别进行了映射:
{
"ProductDiscount": {
"A": 20.0
}
}
问题是如何在以下情况下计算ReferencePrice并存储或更新它:
似乎我应该用触发器来处理它。但我不确定!
答案 0 :(得分:1)
我不确定这种模式是否会成功。您如何将产品与折扣相关联?它们按类别相关,但使用此模型,它是多对多关系。这是你的意图吗?如果是这样,您将如何处理可能适用于同一产品的多项折扣?
如果你要这样离开,你可以考虑的一个策略是multi-map / reduce来计算价格,Indexed Properties Bundle将结果写回文档。但这是一个相当复杂的设置。
通过对每个类别进行一次折扣,并将折扣定义为类别文档的一部分,您可以更轻松地实现这一目标。然后,您可以使用LoadDocument在编制索引时为类别提取折扣。
您需要尝试一个符合您可以维护的和要求的模型。
其他想法:
是的,您可以使用trigger,但这会将服务器端作为插件运行。可能很难维护。
您可以在应用类别折扣的任何时候手动发送scripted patch request。新文档和对现有文档的编辑必须在您自己的代码中手动完成。
您可以完全退出产品的计算价格。每当加载产品时,您都会包含折扣并动态计算价格。
还有其他人,我敢肯定。这实际上取决于您的特定应用程序中的功能。