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: "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: "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
}