Тип QML EnginioClient
Интерфейс клиента для доступа к службе Enginio Подробнее...
| Заявление импорта: | import Enginio 1.0 |
| С момента: | Qt 5.3 |
Свойства
- authenticationState : Enginio::AuthenticationState
- backendId : строка
- identity : EnginioIdentity
Сигналы
- error(QJSValue reply)
- finished(QJSValue reply)
- sessionAuthenticated(QJSValue reply)
- sessionAuthenticationError(QJSValue reply)
- sessionTerminated()
Методы
- EnginioReply create(QJSValue object, Operation operation)
- EnginioReply downloadUrl(QJSValue object)
- EnginioReply fullTextSearch(QJSValue query)
- EnginioReply query(QJSValue query, Operation operation)
- EnginioReply remove(QJSValue query, Operation operation)
- EnginioReply update(QJSValue query, Operation operation)
- EnginioReply uploadFile(QJSValue object, QUrl file)
Подробное описание
import Enginio 1.0
EnginioClient — это сердце QML API для Enginio. Он используется для всех взаимодействий с бэкендом Enginio. EnginioModel дополняет его, чтобы упростить обработку нескольких объектов.
Бэкенд идентифицируется по ID бэкенда.
EnginioClient {
id: client
backendId: "YOUR_BACKEND_ID" // from Enginio Dashboard
} После настройки бэкенда можно выполнять запросы, вызывая метод query в EnginioClient. Например, чтобы получить все объекты типа "objects.image", выполните этот запрос:
EnginioClient {
// ...
Component.onCompleted: query({"objectType": "objects.image"})
} EnginioClient предоставляет удобный способ обработки ответов на ваши запросы:
EnginioClient {
// ...
onFinished: console.log("Engino request finished." + reply.data)
onError: console.log("Enginio error " + reply.errorCode + ": " + reply.errorString)
} Документация по свойствам
authenticationState : Enginio::AuthenticationState
Состояние аутентификации.
Enginio предоставляет удобное управление пользователями. Состояние аутентификации отражает, аутентифицирован ли текущий пользователь.
См. также identity и EnginioOAuth2Authentication.
backendId : строка
ID бэкенда Enginio. Его можно получить на панели управления Enginio.
identity : EnginioIdentity
Свойство, представляющее пользователя. Установка свойства инициирует асинхронный запрос на аутентификацию, результат которого обновляет authenticationState.
Разрешено присвоить свойству значение null для завершения сессии.
См. также authenticationState, sessionAuthenticated, sessionAuthenticationError и EnginioOAuth2Authentication.
Документация по сигналам
error(QJSValue reply)
Этот сигнал излучается, когда reply завершается с ошибкой.
finished(QJSValue reply)
Этот сигнал излучается, когда reply завершается.
Примечание: этот сигнал всегда излучается независимо от того, завершился ли ответ успешно или нет.
sessionAuthenticated(QJSValue reply)
Излучается при успешном входе пользователя в систему.
Сигнал излучается после успешной аутентификации пользователя на бэкенде. После этого все взаимодействия с бэкендом будут использовать эти учетные данные. reply содержит информацию о входе и пользователе. Подробности могут отличаться в зависимости от используемого метода аутентификации, но типичный ответ может выглядеть так:
{
"access_token": "...", // oauth2 access token
"refresh_token": "...", // oauth2 refresh token
"token_type": "bearer", // oauth2 token type
"expires_in": 28799, // oautth2 token expiry date
"enginio_data": {
"user": {
"id": "...", // this user Id
"createdAt": "...", // when the user was created
"creator": { // who created the user
"id": "creatorId",
"objectType": "users"
},
"email": "user@user.com", // the user's email address
"firstName": "John", // the user's first name
"lastName": "Foo", // the user's last name
"objectType": "users",
"updatedAt": "2013-11-25T14:54:58.957Z",
"username": "JohnFoo" // the user's login
},
"usergroups": [] // usergroups to which the user belongs
}
} См. также EnginioClient::sessionAuthenticationError(), EnginioReply и EnginioOAuth2Authentication.
sessionAuthenticationError(QJSValue reply) const
Излучается, когда вход пользователя в систему завершается неудачей.
reply содержит подробности о причинах неудачи входа.
См. также EnginioClient::sessionAuthenticated(), EnginioReply, EnginioClientConnection::identity и EnginioOAuth2Authentication.
sessionTerminated() const
Излучается при выходе пользователя из системы.
См. также EnginioOAuth2Authentication.
Документация по методам
EnginioReply create(QJSValue object, Operation operation)
Вставка нового object в базу данных.
Возвращаемый EnginioReply указывает на успех создания объекта. Объект становится доступным из бэкенда, если завершение происходит без ошибок.
operation определяет вид создаваемого объекта. Например, обычный объект, пользователь или группа пользователей. По умолчанию используется Enginio::ObjectOperation для создания обычных объектов.
Примечание: для обычных объектов требуется objectType, и он должен начинаться с "objects.".
JSON для создаваемого объекта должен иметь следующую структуру:
{
"objectType": "object.myType",
"name" : "A thing",
"price" : "5",
} Где только свойство objectType является обязательным, а name и price — примеры пользовательских свойств.
Пользователи и все другие типы объектов создаются таким же образом, но не требуют objectType.
Чтобы создать нового пользователя:
var reply = enginioClient.create(
{ "username": login.text,
"password": password.text,
"email": userEmail.text,
"firstName": userFirstName.text,
"lastName": userLastName.text
}, Enginio.UserOperation) Чтобы добавить нового члена в группу пользователей, JSON должен выглядеть так, как показано в примере ниже.
{
"id": "groupId",
"member": { "id": "userId", "objectType": "users" }
} Возвращает EnginioReply со статусом и данными по завершении.
См. также EnginioReply, query(), update(), remove() и Enginio::Operation.
EnginioReply downloadUrl(QJSValue object)
Получение URL для скачивания файла.
var downloadData = {
"id": uploadReply.data.id,
}
var downloadReply = enginio.downloadUrl(downloadData) Ответ содержит URL для скачивания и срок действия URL.
downloadReply.data.expiringUrl downloadReply.data.expiresAt
См. также uploadFile().
EnginioReply fullTextSearch(QJSValue query)
Выполнение полнотекстового поиска в базе данных.
query — это объект, отправляемый на бэкенд для выполнения полнотекстового поиска. Обратите внимание, что для поиска требуется индексирование соответствующих свойств (на сервере, настраиваемое в бэкенде).
Возвращает EnginioReply со статусом и результатом по завершении.
См. также EnginioReply, EnginioClient::create(), EnginioClient::query(), EnginioClient::update(), EnginioClient::remove() и структура JSON запроса.
EnginioReply query(QJSValue query, Operation operation)
Запрос к базе данных.
query — это объект, содержащий фактический запрос к бэкенду. Запрос будет выполнен на части бэкенда, соответствующей operation.
query должен содержать "objectType", указывающий на тип, определённый в бэкенде. Также он может содержать:
- query - описывает, как запросы объектов, позволяет фильтровать результаты. См. {https://engin.io/documentation/rest/parameters/queries} {JSON-структура запроса}
- limit - ограничивает количество объектов, которые должен вернуть сервер (значение по умолчанию —
100). - offset - количество объектов, которые сервер должен пропустить с начала возвращаемых результатов. Обратите внимание, что сервер хранит данные в случайном порядке, поэтому использование offset подразумевает также использование
sort. - sort - описывает, как результаты сортируются. См. JSON-структуру запроса сортировки
- count - если
countустановлено, сервер вернёт только количество соответствующих объектов - include - описывает, какие другие объекты включены в ответ. См. JSON-структуру включения
JSON для перечисления всех объектов типа "objects.image":
{
"objectType": "objects.image"
} Пример использования include, чтобы получить file ссылки и с параметром запроса, который ограничивает результаты только теми объектами, где ссылка действительна:
{
"objectType": "objects.image",
"include": {"file": {}},
"query" : { "file": { "$ne": null } }
} Для поиска группы пользователей с именем "allUsers":
var groupQuery = enginioClient.query({ "query": { "name" : "allUsers" } }, Enginio.UsergroupOperation) Возвращает EnginioReply, содержащий статус и результат по завершении.
См. также EnginioReply, create(), update() и remove().
EnginioReply remove(QJSValue query, Operation operation)
Удаление объекта из базы данных.
Объект, который требуется удалить, идентифицируется по его идентификатору объекта и, если это обычный объект, также по objectType.
JSON, определяющий объект, выглядит следующим образом:
{
"objectType": "objects.images",
"id": "52b1a94b5a3d8b15b1037ff5"
} operation — область, из которой объект удаляется. По умолчанию используется Enginio::ObjectOperation для удаления обычных объектов.
Возвращает EnginioReply, содержащий статус по завершении.
См. также EnginioReply, create(), query() и update().
EnginioReply update(QJSValue query, Operation operation)
Обновление объекта в базе данных.
operation — область, в которой объект обновляется. По умолчанию используется Enginio::ObjectOperation для обновления обычных объектов.
Для изменения свойства name объекта на "Новое имя" используйте следующий JSON:
{
"id": "objectId",
"objectType": "objects.objectType",
"name": "New Name"
} Все другие существующие свойства объекта не затрагиваются при обновлении.
Для обновления списка управления доступом объекта используйте следующий JSON:
{
"id": "objectId",
"objectType": "objects.objectType",
"access": { "read": ["id": "userId", "objectTypes": "users"],
"update": ["id": "userId", "objectTypes": "users"],
"admin": ["id": "userId", "objectTypes": "users"] }
} Возвращает EnginioReply, содержащий статус по завершении.
См. также EnginioReply, create(), query() и remove().
EnginioReply uploadFile(QJSValue object, QUrl file)
Сохранение файла, прикреплённого к объекту, в Enginio.
Каждый загруженный файл должен быть связан с объектом в базе данных.
Примечание: Загрузка будет работать только с соответствующей настройкой сервера: в панели управления создайте свойство нужного типа. Установите для этого свойства ссылку на файлы.
Для загрузки файла сначала создайте объект:
var fileObject = {
"objectType": AppConfig.testObjectType,
"title": "Example object with file attachment",
}
var reply = enginio.create(fileObject); Затем выполните фактическую загрузку:
var objectId = reply.data.id
var uploadData = {
"file":{
"fileName":"test.png"
},
"targetFileProperty": {
"objectType": AppConfig.testObjectType,
"id": objectId,
"propertyName": "fileAttachment"
},
}
var uploadReply = enginio.uploadFile(uploadData, fileName) Примечание: Нет необходимости удалять файлы напрямую. Вместо этого, при удалении объекта, содержащего ссылку на файл, файл будет удалён автоматически.
См. также downloadUrl().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qml-enginio-enginioclient.html