2015-07-17 4 views
0

У меня есть следующий документ, представляющий комнату чата, где временная метка в объектах-членах представляет последнее занятие конкретного пользователя в комнате.Обновление массива объектов в 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?

ответ

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

Не уверен, что это «правильный путь» для этого.

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

Благодарим вас за ответ, но это не совсем то, о чем я прошу. Я прошу запроса RethinkDB, а не как сделать это в обычном JavaScript-объекте. – Tholle

+1

@Tholle Думаю, я неправильно понял ваш вопрос – Kerndog73

Смежные вопросы