解析MongoDB引用

时间:2012-07-25 21:02:48

标签: node.js mongodb

我目前正在使用nodejs和mongoDB构建聊天应用 基本上我有两个集合要在db中维护。

user = {
   _id: ObjectId("1234"),
   account: "stan123" 
}

thread = {
  _user:  ObjectId("1234"),
  messages: [
     {
          body:"hi"
          _user:ObjectId("1234")
     },
     {
          body:"second msg"
          _user:ObjectId("1234")
     }
  ]
}

我打算将带有所有已解析信息(用户)的线程模型传递给客户端,以便我可以使用它构建我的小部件。 我搜索了这个解决方案。有人建议从客户端拨打额外的电话来获取数据。 但是,我担心当消息量增加时,会有大量的http调用可能会损害网站速度。

我知道有些驱动程序可以自动解析DBRefs并使代码清理干净。 但是,根据 http://docs.mongodb.org/manual/applications/database-references/

我决定只使用id来维护引用,使其尽可能简单。

我的计划是解决服务器端的所有引用。目前的方法是先获取消息数组的长度。 然后遍历消息数组并进行第二次查询以分别解析用户信息。 在每个查询回调中,执行messageToResolve ++和if(messageToResolve> = thread.messages.length)

如果条件满足,请将已解析的模型发送给客户端并结束响应。

这不是我考虑嵌入的情况,因为当您需要更新用户数据时会很痛苦。 (嵌入消息,因为它仅在线程存在时才存在)

我不确定这是否是一个很好的方法。 有没有人有更好的解决方案?

很抱歉,如果我没有解释我的问题和解决方案足够清楚。 并提前感谢。

0 个答案:

没有答案
相关问题