更新 RethinkDB 中的对象数组

Update array of objects in RethinkDB

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

{
  "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 更新时间戳?

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

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;
    }
  }
}

我最终过滤掉了除我感兴趣的成员之外的所有成员,并向其附加了一个新对象。

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 })
  };
});

不确定这是 "right way" 要做的。