Создайте таблицу RethinkDB при первой записи getRecord в deepstream.io

У меня есть сервер Deepstream, подключенный к RethinkDB с официальным коннектором.

server.set( 'storage', new RethinkDbConnector({
  port: 28015,
  host: rethinkDbHost,
  splitChar: '/',
  defaultTable: 'ds-records'
}));

Сначала в базе данных нет таблиц. enter image  описание здесь

Когда я создаю запись, таблица создается автоматически, если она не существует.

var id = "chat/" + ds.getUid();
var record = ds.record.getRecord(id);

record.whenReady(function() {
  record.set({user: data.user, message: data.message, timestamp: Date.now(), id: id});
});

Таблица создана по назначению. введите здесь описание изображения

Однако, если я попытаюсь создать «вложенную таблицу», это не сработает.

var id = "chat/idle_banter/" + ds.getUid();
var record = ds.record.getRecord(id);

record.whenReady(function() {
  record.set({user: data.user, message: data.message, timestamp: Date.now(), id: id});
});

При попытке создать запись с именем table/collection/id таблица не создается введите здесь описание изображения

Должен ли я сначала создать таблицу вручную, а затем добавить коллекцию?


Редактировать

Неуклюжее использование терминов с моей стороны. Я хочу создать таблицу, представляющую весь чат, а затем создать документ, представляющий реальную комнату. Новые сообщения чата (записи) затем будут помещены в этот документ.


person Tholle    schedule 26.06.2015    source источник


Ответы (1)


Я должен признать, что не думаю, что RethinkDB поддерживает концепцию вложенных таблиц. Если вы хотите создать таблицу для каждого чата, просто используйте символ, отличный от splitChar, например. 'chat-idle_banter/<recordName>'

person wolframhempel    schedule 26.06.2015
comment
Спасибо за ваш ответ! Ты прав. Тем не менее, было бы неплохо сделать чаты внутри одного стола, так как стол имеет накладные расходы ~ 12 МБ, что не будет работать в долгосрочной перспективе для многих людей с собственными комнатами. - person Tholle; 26.06.2015