首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Restlet对实体存储中一对多关系的APISpark响应

Restlet对实体存储中一对多关系的APISpark响应
EN

Stack Overflow用户
提问于 2015-04-30 21:17:10
回答 1查看 100关注 0票数 1

所以这是一个场景,我有3个信标(BEACON_TABLE)和一些产品(PRODUCT_TABLE),其中每个产品都与一个信标相关联(一对多关系)。数据模型在SQL中工作得很好,我只是在我的PRODUCT_TABLE中使用了一个外键来引用来自BEACON_TABLE的特定信标id。我在实体存储(全栈/无包装)中做到了这一点,在实体存储中,我向PRODUCT_TABLE添加了一个属性,并将类型的引用设置为BEACON_TABLE。当我在BEACON_TABLE资源上运行GET方法时,它只显示信标数据,但我期望与该信标相关联的所有产品都具有响应。一个类似如下的JSON响应:

代码语言:javascript
复制
[
   {"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中实现它?我浏览了用户指南和用户评论场景,这对我来说是相当不清楚的。我们将非常感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2015-04-30 21:43:02

APISpark目前不支持这个开箱即用的功能。我的意思是获取元素及其在其他实体中定义的依赖项。我猜你来自关系世界;-)

我建议您使用的方法(也是APISpark推荐的方法)是利用APISpark的“复合字段”功能对实体存储进行非规范化。这种方法是noSQL世界中的常见模式(默认情况下,APISpark基于noSQL数据库),因为不存在类似SQL式的连接支持。

使用这种方法具有性能优势,因为只需要一个对数据库的请求,而不需要N+1 (实际上是多个)。

以下是针对您的用例所采取的方法:

具有子字段id

  • Primitive字段price

  • 实体Beacon
    • 原语字段list字段products (list = true)

id

  • Primitive字段price

  • Entity Product
    • 原语字段

在为实体存储添加字段时,您可以在“类型”下拉列表中指定类型composite。在此之后,您将能够直接在此字段上创建子字段(字段名称旁边的图标+ )。

主要的缺点是当您想要更新产品时,您需要进行两次更新。我猜这并不是经常发生的事情,所以这种方法是可以接受的。

如果不清楚,请随时问我更多问题!

希望对你有帮助,蒂埃里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29968806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档