所以这是一个场景,我有3个信标(BEACON_TABLE)和一些产品(PRODUCT_TABLE),其中每个产品都与一个信标相关联(一对多关系)。数据模型在SQL中工作得很好,我只是在我的PRODUCT_TABLE中使用了一个外键来引用来自BEACON_TABLE的特定信标id。我在实体存储(全栈/无包装)中做到了这一点,在实体存储中,我向PRODUCT_TABLE添加了一个属性,并将类型的引用设置为BEACON_TABLE。当我在BEACON_TABLE资源上运行GET方法时,它只显示信标数据,但我期望与该信标相关联的所有产品都具有响应。一个类似如下的JSON响应:
[
{"beacon_id":"beacon1", "products": [
{"id":"prod1","price":"1.50"},
{"id":"prod2","price":"2.50"}
]
},
{"beacon_id":"beacon2", "products": [
{"id":"prod30","price":"3.95"},
{"id":"prod40","price":"5.15"}
]
}
]如何在Entity Store中实现它?我浏览了用户指南和用户评论场景,这对我来说是相当不清楚的。我们将非常感谢您的帮助。
发布于 2015-04-30 21:43:02
APISpark目前不支持这个开箱即用的功能。我的意思是获取元素及其在其他实体中定义的依赖项。我猜你来自关系世界;-)
我建议您使用的方法(也是APISpark推荐的方法)是利用APISpark的“复合字段”功能对实体存储进行非规范化。这种方法是noSQL世界中的常见模式(默认情况下,APISpark基于noSQL数据库),因为不存在类似SQL式的连接支持。
使用这种方法具有性能优势,因为只需要一个对数据库的请求,而不需要N+1 (实际上是多个)。
以下是针对您的用例所采取的方法:
具有子字段id
price的
Beacon products (list = true)
id
price的
Product
在为实体存储添加字段时,您可以在“类型”下拉列表中指定类型composite。在此之后,您将能够直接在此字段上创建子字段(字段名称旁边的图标+ )。
主要的缺点是当您想要更新产品时,您需要进行两次更新。我猜这并不是经常发生的事情,所以这种方法是可以接受的。
如果不清楚,请随时问我更多问题!
希望对你有帮助,蒂埃里
https://stackoverflow.com/questions/29968806
复制相似问题