我正在使用mongodb,node.js和backbone.js构建一个应用程序,它将作为我的学习体验。我很想知道从REST API中获取相关对象的最佳做法是什么。
假设我们有“发布”对象和“用户”对象,帖子具有“userId”属性,可将其链接到用户。
你应该:
有没有人有他们可以分享的经验?
由于
答案 0 :(得分:2)
如果没有特定的UI故事,很难回答这个问题,但根据你所提供的内容,我会说#1更接近我会采取的方法。但是,不是“检查”userId的帖子,而是使用rel=user
向用户提供链接,只需按照该用户资源的链接即可。我更喜欢HATEOAS范例,其中这些资源通过服务器而不是客户端构造的显式链接进行导航。
这显然会导致更多的XHR,但如果这是一个问题,那么我建议您的视图需要一个视图模型,为提供而不用连接。这是通过公开一个专门为客户服务的模型来完成的,而不需要让客户负责构建它所需的数据。 HTH,
麦克
答案 1 :(得分:1)
MongoDB没有在服务器上“建立连接”的功能,因此相关问题可能更多的是数据建模,以及对link or embed相关用户数据是否更有意义。< / p>
Fetch a post object on the client side. Inspect the "userId" property
of the post and then separately fetch that user. This seems to be
nice and simple in terms of server-side code, but could end up making
lots of requests if things get complicated further down the line.
最接近此选项的方法是获取帖子,然后使用$in
operator查询帖子中提到的userID的相关信息。考虑到大量的userID,这可能会导致性能降低,因为服务器仍在进行查询以查找索引中的每个userID。
另一种需要考虑的常见方法是混合选项:
在帖子中嵌入了一些最小的用户数据,例如userID(另一个集合中的用户数据database reference)和一些详细信息,例如用户名。
根据需要在AJAX请求中查找其他详细信息(例如,将鼠标悬停在用户名上)。
更好的方法取决于您的用例以及您希望在应用程序的页面上显示的信息。