更新RethinkDB中的对象数组

时间:2015-07-17 07:17:47

标签: javascript database rethinkdb

我有以下代表聊天室的文档,其中成员对象中的时间戳表示该特定用户在该房间中的最后一项活动。

{
  "id":  "4ff130cc-3201-4a30-8a4c-5ce4303d28d0",
  "name": "General chat",
  "members": [
     {
       "timestamp": 1437074682224 ,
       "user_id": "bdb4c00c-0ce8-4e22-9331-38b5c4b083e4"
     },
     {
       "timestamp": 1437074693805 ,
       "user_id": "7708ebc6-915b-4bfd-b63e-849bacefa201"
     }
  ]
}

当用户例如加入房间,我想更新时间戳。这似乎是一个微不足道的操作,但我无法让它发挥作用。

我正在使用官方JavaScript驱动程序。如何使用给定的user_id更新时间戳?

2 个答案:

答案 0 :(得分:1)

我最终筛选出除了我感兴趣的成员之外的每个成员,并附加一个新对象。

r.db("chat").table("rooms").get("room_id").update(function(room) {
  return {
    members: room("members").filter(function (member) {
      return member("user_id").ne("relevant_user_id");
    }).append({ user_id: "relevant_user_id", timestamp: 1337 })
  };
});

不确定这是“正确的方法”。

答案 1 :(得分:0)

我可能误解了你的问题,但试试这个

function updateTime(user_id) {
  for (var i = 0; i < members.length; i++) {
    if (members[i].user_id == user_id) {
      members[i].timestamp = /*current time*/
      break;
    }
  }
}