QML类型说明-EnginioClient

本文介绍EnginioClient,一种用于与云端交互的QML API,涵盖其使用方法、属性、信号及方法等内容,包括认证管理、数据操作等方面。

EnginioClient

ImportStatement:   import Enginio 1.0

Since:  Qt 5.3

 

Properties

authenticationState: Enginio::AuthenticationState

backendId :string

identity :EnginioIdentity

 

Signals

error(QJSValuereply)

finished(QJSValuereply)

sessionAuthenticated(QJSValuereply)

sessionAuthenticationError(QJSValuereply)

sessionTerminated()

 

Methods

EnginioReplycreate(QJSValue object, Operation operation)

EnginioReplydownloadUrl(QJSValue object)

EnginioReplyfullTextSearch(QJSValue query)

EnginioReplyquery(QJSValue query, Operation operation)

EnginioReplyremove(QJSValue query, Operation operation)

EnginioReplyupdate(QJSValue query, Operation operation)

EnginioReplyuploadFile(QJSValue object, QUrl file)

 

DetailedDescription

importEnginio 1.0

EnginioClient是QML为云设计的API。它用来与后端云沟通。EnginioModel更是使多个对象的处理变得简单。云端被云端id标识。

EnginioClient{

    id: client

    backendId: "YOUR_BACKEND_ID" //from Enginio Dashboard

}

一旦云端被设置,调用EnginioClient的query来运行查询变得可能。例如用类型"objects.image"运行查询获得所有的对象。

EnginioClient{

    // ...

    Component.onCompleted:query({"objectType": "objects.image"})

}

EnginioClient给了我们相应查询结果的方便方式:

EnginioClient{

    // ...

    onFinished: console.log("Enginorequest finished." + reply.data)

    onError: console.log("Enginio error" + reply.errorCode + ": " + reply.errorString)

}

数据交换使用JSON 语法,它是JavaScript 语法的子集。

 

PropertyDocumentation

authenticationState: Enginio::AuthenticationState

身份验证的状态。Enginio提供了简便的方式管理用户。这个属性反应了当前用户的验证情况。同时参阅identity和EnginioOAuth2Authentication。

 

backendId :string

云端id。他能从Enginio发布板获得。

 

identity : EnginioIdentity

代表一个用户。设置这个属性将创建一个异步认证请求,返回的结果更新authenticationState。分配它一个空指针将终止会话。

同时参阅authenticationState、sessionAuthenticated、sessionAuthenticationError和EnginioOAuth2Authentication。

 

SignalDocumentation

error(QJSValuereply)

当响应完成,包含错误时,发射这个信号。

 

finished(QJSValuereply)

当相应完成时发射这个信号。注意这个信号总是被发射,不管响应完成是成功还是失败。

 

sessionAuthenticated(QJSValuereply)

用户登录后发射这个信号。这个信号发射于用户成功登陆到云端。从那时起,和云端的所有通信都使用这个凭证。reply包含登录和用户的信息。详细的信息根据登录方法的不同有所区别,但典型的响应像下面这样:.

{

  "access_token":"...",              // oauth2access token

  "refresh_token":"...",             // oauth2refresh token

  "token_type":"bearer",             // oauth2token type

  "expires_in": 28799,                // oautth2 token expiry date

  "enginio_data": {

    "user": {

      "id": "...",                    // this user Id

      "createdAt":"...",             // when theuser was created

      "creator": {                    // who created the user

        "id": "creatorId",

        "objectType":"users"

      },

      "email":"user@user.com",       // theuser's email address

      "firstName":"John",            // theuser's first name

      "lastName":"Foo",              // theuser's last name

      "objectType":"users",

      "updatedAt":"2013-11-25T14:54:58.957Z",

      "username":"JohnFoo"           // the user's login

    },

    "usergroups": []                  // usergroups to which theuser belongs

  }

}

同时参阅EnginioClient::sessionAuthenticationError()、EnginioReply和EnginioOAuth2Authentication。

 

sessionAuthenticationError(QJSValuereply) const

登录失败发射这个信号。reply包含登录为什么登录失败的详细信息。同时参阅EnginioClient::sessionAuthenticated()、EnginioReply、EnginioClientConnection::identity、EnginioOAuth2Authentication。

 

sessionTerminated()const

当用户登出时,发射这个信号。同时参阅EnginioOAuth2Authentication。

 

MethodDocumentation

EnginioReplycreate(QJSValue object, Operation operation)

插入一个新对象到数据库中。返回的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。

 

EnginioReplydownloadUrl(QJSValue object)

得到下载文件的URL。

vardownloadData = {

    "id": uploadReply.data.id,

}

vardownloadReply = enginio.downloadUrl(downloadData)

响应包含下载的URL和URL将在有效状态持续多久。

downloadReply.data.expiringUrl

downloadReply.data.expiresAt

同时参阅uploadFile()。

 

EnginioReplyfullTextSearch(QJSValue query)

在数据库中执行全文搜索。qurey是发送到云端执行全文搜索的对象。注意,搜索需要服务等索引到搜索属性(在云端被设置)。返回的EnginioReply包含搜索完成的状态和结果。同时参阅EnginioReply、EnginioClient::create()、EnginioClient::query()、EnginioClient::update()、EnginioClient::remove()和JSON要求结构。

 

EnginioReplyquery(QJSValue query, Operation operation)

查询数据库。

quere包含在云端的实际查询。它将运行在云端的操作部分。query必须包含"objectType",用以指明在云端的类型定义。他还能包含下面的部分:

query -描述什么样的对象被查询,允许过滤结果。可查阅{https://engin.io/documentation/rest/parameters/queries}{JSON query structure}

limit -限制服务返回多少个对象。默认值是100。

offset -从返回结果开始,多少个对象被略过。注意服务保持随即排序,所以这样用offset意味着排序。

sort -结果如何排序,参阅JSON排序要求结构。

count -如果count被设置,服务仅返回了count匹配的对象。

include -那些对象在响应中包含。参阅JSON的include结构

JSON列出所有"objects.image"类型的对象:

{

    "objectType":"objects.image"

}

下面是包含文件引用和查询参数的对象是有效的,需要返回:

{

    "objectType":"objects.image",

    "include": {"file":{}},

    "query" : { "file": {"$ne": null } }

}

寻找用户组用"allUsers":

vargroupQuery = enginioClient.query({ "query": { "name" :"allUsers" } }, Enginio.UsergroupOperation)

当查询完成,返回的EnginioReply包含状态和结果数据。

同时参阅EnginioReply、create()、update()和remove()。

 

EnginioReplyremove(QJSValue query, Operation operation)

从数据库中移除一个对象。

被对象ID指定的对象被移除,如果要移除的对象是普通对象,还需要指定objectType。

JSON看起来像下面这样指定标识:

{

    "objectType":"objects.images",

    "id":"52b1a94b5a3d8b15b1037ff5"

}

operation被移除对象的区域,默认是Enginio::ObjectOperation,表示普通对象默认被移除。当移除完成,返回包含状态的EnginioReply。同时参阅EnginioReply、create()、query()和update()。

 

EnginioReplyupdate(QJSValue query, Operation operation)

更新数据库中的对象。operation是更新对象的区域。默认Enginio::ObjectOperation,表示更新普通对象。

改变对象的名字属性为"New 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()。

 

EnginioReplyuploadFile(QJSValue object, QUrl file)

保存对象关联的文件到Enginio。

每一个上传到数据库的文件需要与对象关联。

注意,上传只在设置制服的服务器上工作。设置制服是这样的:在云端的仪表板上创建我们使用的属性,设置这个属性引用文件。

上传文件的顺序,首先创建一个对象:

varfileObject = {

    "objectType":AppConfig.testObjectType,

    "title": "Example objectwith file attachment",

}

var reply =enginio.create(fileObject);

然后做上传动作:

var objectId= reply.data.id

varuploadData = {

    "file":{

       "fileName":"test.png"

    },

    "targetFileProperty": {

        "objectType": AppConfig.testObjectType,

        "id": objectId,

        "propertyName":"fileAttachment"

    },

}

varuploadReply = enginio.uploadFile(uploadData, fileName)

注意不要直接删除文件,替代的做法是,当包含引用的对象被删除,文件自动被删除。同时参阅downloadUrl()。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值