Backbone.js,mongodb和获取相关对象 – 客户端或服务器端?

我正在使用mongodb,node.js和backbone.js来构build一个应用程序,作为我的学习体验。 我很想知道从REST API中获取相关对象的最佳做法是什么。

比方说,我们有“发布”对象和“用户”对象,post具有链接到用户的“userId”属性。

你应该:

  1. 在客户端获取一个post对象。 检查post的“userId”属性,然后分别获取该用户。 从服务器端代码来看,这似乎很好,但如果事情变得更复杂,最终可能会产生大量的请求。
  2. 获取一个post对象,并让服务器“build立连接”,并在相同的请求中给你相关的用户对象。

有没有人有一些他们可以分享的经验?

谢谢

没有一个特定的用户界面的故事很难回答这个问题,但是根据你提供的内容,我会说#1更接近我要采取的方法。 但是,不要“检查”userId的post,而要使用rel=user为用户提供链接,并简单地按照该链接查找用户资源。 我更喜欢HATEOAS范式,这些资源通过由服务器而不是客户端构build的显式链接进行导航。

这显然会导致更多的XHR,但如果这是一个问题,那么我build议你的观点是需要一个视图模型,它没有联合服务。 这是通过暴露一个服务于客户的专用模型来完成的,而不需要客户负责构build它所需要的数据。 心连心,

麦克风

MongoDB没有在服务器上“build立连接”的function,所以相关的问题可能更多的是数据build模,以及连接或embedded相关的用户数据是否更有意义。

 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. 

最接近此选项的是获取post,然后使用$in操作符查询post中提到的用户ID的相关信息。 考虑到大量的用户ID,这可能导致性能下降,因为服务器仍在执行查询来查找索引中的每个用户ID。

另一种常见的方法是混合选项:

  • 在post中embedded一些最小的用户数据,例如用户ID(在另一个集合中的用户数据的数据库引用 )以及诸如他们的用户名的一些细节。

  • 根据需要查找AJAX请求中的其他详细信息(例如,将鼠标hover在用户名上)。

更好的方法取决于您的用例以及您希望在应用程序页面上显示的信息。