Javascript.Структуры
Материал из Hivext Wiki
Создание произвольных типов данных
В настоящем уроке мы рассмотрим пример использования сервиса Структур на Javascript. Попробуем создать свой тип данных, поработать с ним и потом удалить. Как обычно, чтобы начать работать с сервисом придется перейти к документации и выбрать нужные методы.
Смотрим документацию
Документация сервиса Структуры.
Для урока выбраны методы:
- DefineType - определение нового типа данных;
- UndefineType - удаление типа данных;
- AddField - добавление поля в тип данных;
- RemoveField - удаление поля из типа данных;
- GetType - получение информации о типе.
Смотрим есть ли готовые Javascript клиенты для данного сервиса. Если под необходимый язык клиента нет, то методы сервиса придется вызывать напрямую (см. Подключение сервисов).
Важно обратить внимание на особенности работы c типами данных:
- Типы данных создаются для заданного идентификатора приложения (APPID);
- Права создавать, удалять и редактировать типы данных имеет только владелец идентификатора приложения;
- Физически создание нового типа данных это новая таблица в базе данных. Добавление/удаление поля в тип данных это управление колонками таблицы. Запись в таблицу это создание нового объекта этого типа.
Теоретическая часть закончена, переходим к практической.
Приступаем к разработке
Чтобы вызывать методы сервисов, необходимо получить идентификатор приложения (см. Начинаем разработку).
Помним что идентификатор приложения обязательный параметр у всех методов.
В данном примере воспользуемся гостевым аккаунтом, который используется для тестов.
Разработчик: guest@guest.com
Пароль: guest
Для разработчика guest@guest.com уже создан идентификатор приложения (APPID): 9106d759b6a3ae4b1a790d7b3b78fb23.
Этот идентификатор можно использовать на любом домене. Итак у нас все есть чтобы перейти непосредственно к созданию новых типов данных.
// Идентификатор приложения для которого будем создавать типы данных.
var sAppid = "9106d759b6a3ae4b1a790d7b3b78fb23";
var sSession; // Здесь будем хранить идентификатор сессии разработчика.
//
// Начнем сеанс разработчика.
//
Users.Authentication.Signin(sAppid, "guest@guest.com", "guest", function(oResponse) {
if(oResponse.result === 0) { // Аутентификация прошла успешно.
// Сохраняем идентификатор сессии разработчика.
sSession = oResponse.session;
//
// Для приложения решено определить новый расширеный тип пользователя (название типа IUser).
// Для связи с уже имеющимися пользователями добавим поле хранения идентификатора (Uid).
// В расширенном типе также будем хранить адрес (Address) и телефон (PhoneNumber) пользователя.
// Определяем тип IUser с помощью метода DefineType.
//
Data.Base.DefineType(sAppid, sSession, "IUser", function(oResponse) {
if(oResponse.result === 0) { // Новый тип данных создан успешно.
//
// Только что созданный тип пока бесполезен,
// так как в нем нет полей где будут содержаться данные.
//
// Добавим необходимые поля (Uid, Address и PhoneNumber).
Data.Base.AddField(sAppid, sSession, "IUser", "Uid", function(oResponse) {});
Data.Base.AddField(sAppid, sSession, "IUser", "Address", function(oResponse) {});
Data.Base.AddField(sAppid, sSession, "IUser", "PhoneNumber", function(oResponse) {});
//
// Новый тип данных создан и теперь можно создавать объекты данного типа.
// Поля типа станут свойствами объектов и в них можно хранить значения.
// Пример создания экземпляра типа IUser.
// Data.Base.CreateObject(sAppid, sSession, "IUser", function(oResponse) {
//
// После создания можно записывать данные в свойства объекта,
// где id идентификатор объекта, возвращается в ответе метода CreateObject.
//
// Data.Base.SetProperty(sAppid, sSession, oResponse.id,
// "Address", "Mars, Square-35, Section 562784", function(oResponse) {});
//
// });
//
// Полную работу с объектами рассмотрим в следующем уроке.
//
//
// Теперь можно получить информацию о созданном типе.
//
Data.Base.GetType(sAppid, sSession, "IUser", function(oResponse) {
if(oResponse.result === 0) {
//
// В поле oResponse.fields содержится описание типа в формате JSON.
// fields = { Uid : "string", Address : "string", PhoneNumber : "string" }
//
}
});
// Удалим поле Address.
Data.Base.RemoveField(sAppid, sSession, "IUser", "Address", function(oResponse) {});
//
// Удалим тип данных.
// ВАЖНО: При удалении также удаляются все объекты данного типа.
//
Data.Base.UndefineType(sAppid, sSession, "IUser", function(oResponse) {});
}
//
// Завершим сеанс разработчика.
//
Users.Authentication.Signout(sAppid, sSession, function(oResponse) {});
});
}
});
