Работа с данными

Загрузка данных

Chat - серверно-ориентированный компонент и ожидает загрузку данных через URL:

 view: "chat", url: "remote/data"

Сервисы для работы с данными

У Chat чата есть несколько сервисов для работы с данными:

1. Local Data

  • хранит данные в коллекциях на стороне клиента
  • предоставляет методы для получения и отрисовки данных
  • предоставляет методы для получения чатов, пользователей и сообщений
const local = $$("chat").getService("local");
const chats = local.chats(); // возвращает коллекцию данных

2. Operations

  • предоставляет методы для добавления/удаления/обновления сообщений и чатов
const ops = $$("chat").getService("operations");
ops.addMessage(cid, origin, text); // добавляем новое сообщение

3. Backend

  • предоставляет методы запросов к серверу для получения данных и сохранения изменений
const back = $$("chat").getService("backend");
back.users().then((data) => console.log(data));

4. Upload

  • предоставляет методы для загрузки аватаров для чатов

5. Helpers

  • предоставляет методы для работы с темплейтами, форматами дат и др.
const helpers = $$("chat").getService("helpers");
helpers.dateChatFormat(date); // определяем новый формат

Смотрите папку models исходного кода, чтобы познакомиться с сигнатурами методов.

Операции с данными

Как получить чаты

Загруженные чаты храняться в коллекциях данных. Чтобы получить коллекцию, вызовите метод .chats() у сервиса Local:

const chat = $$("ch");
chat.getService("backend").ready().then(() => {
  const chats = chat.getService("local")
  .chats() // доступ к коллекции
  .serialize(); // сериализация данных, для получения самих элементов
});

Структура объекта чата:

  • avatar (string) - URL для загрузки аватара;
  • date (object) - объект даты;
  • direct_id (number) - ID пользователя из активного приватного чата;
  • id (number) - ID чата;
  • message ("string") - последнее сообщение в чате;
  • name (string) - имя чата;
  • unread_count (number) - количество непрочитанных сообщений (от лица текущего пользователя);
  • users (array) - массив участников чата.

Объект чата

{
  avatar: "remote/avatars/members.jpg",
  chat_id: 0,
  date: new Date(),
  direct_id: 0,
  id: 19,
  message: "Hi there",
  name: "Today's meeting",
  unread_count: 2,
  user_id: 2,
  users: [3, 4, 1]
}

Как получить доступ к пользователям

Чтобы получить коллекцию пользователей (users), вызовите метод users() у сервиса Local:

const chat = $$("ch");
chat.getService("backend").ready().then(() => {
  const users = chat.getService("local")
  .users() // доступ к коллекции
  .serialize(); // сериализация данных, для получения самих элементов
});

Структура объекта пользователя:

  • avatar (string) - URL для загрузки аватара;
  • email (string) - email пользователя;
  • id (number) - ID пользователя;
  • name (string) - имя пользователя;
  • status (number) - статус пользователя. Принимает одно из следующих значений:
    • 1 - "none",
    • 2 - "active",
    • 3 - "busy",
    • 4 - "away"

Объект пользователя

  avatar: "remote/avatars/1.jpg"
  email: "alex@brown.com"
  id: 1
  name: "Alex Brown"
  status: 2

Как получить доступ к сообщениям

Чтобы получить сообщения из конкретного чата, вызовите метод messages() с ID чата в качестве параметра:

const chat = $$("ch");
chat.getService("backend").ready().then(() => {
  chat.getService("local")
  .messages(6) // массив сообщений из чата с "id: 6"
  .then(messages => {
    console.log(messages); // массив сообщений
  });
});

Related sample:  Chat: Data Operations

Метод возвращает промис с массивом сообщений определённого чата. Каждый объект сообщения содержит следующие поля:

Объект сообщения

{
  chat_id: 6,
  date: new Date(),
  id: 19,
  text: "Быть или не быть?",
  user_id: 2
}
  • chat_id (number) - ID чата;
  • date (object) - объект даты;
  • id (number) - ID сообщения;
  • text (string) - текст сообщения;
  • user_id (number) - ID пользователя, который оставил сообщение.
Наверх