Javascript.Структуры

Материал из Hivext Wiki

(Перенаправлено с Javascript.Типы)
Перейти к: навигация, поиск

Создание произвольных типов данных

В настоящем уроке мы рассмотрим пример использования сервиса Структур на 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) {});

        });

    }

});

Личные инструменты