[SOLVED] Quering Enginio with QML
-
Hi,
Did you took a look at getting started Enginio QML ?
-
Hi guidupas,
here's a small snippet showing how to query enginio by using EnginioModel:
EnginioClient { id: client backendId: "myID..." } EnginioModel { id: enMod client: client query: { "objectType" : "objects.myobject", "sort": [{"sortBy":"updatedAt","direction":"desc"}], "query": {"updatedAt": {"$gt": {"$type": "time","$value": getYesterday()}}}, "limit": 15 } } function getYesterday( ) { var today = new Date(); today.setDate(today.getDate()-5) return Qt.formatDate(today, "yyyy-MM-ddT00:00:00Z"); }
You may use all the objects in the EnginioModel enMod in your script:
text: updatedAt
etc.
Hope, it helps
-
Hello!
Thanks for the reply!
The code you posted helped a lot, but I could not, yet, use the data. When I try to use it like you suggested: text: updatedAt it shows me the message:
qrc:/main.qml:117: ReferenceError: updatedAt is not defined
Here is my code. I will became grateful if you could help me:
EnginioClient { id: clienteEnginio backendId: "MyBackEnd" } EnginioModel { id: paisEnginioModel client: clienteEnginio query: { "objectType" : "objects.pais", "sort": [{"sortBy":"updatedAt","direction":"desc"}], "query": {"updatedAt": {"$gt": {"$type": "time","$value": getYesterday()}}}, "limit": 15 } property string text: updatedAt } function getYesterday( ) { var today = new Date(); today.setDate(today.getDate()-5) return Qt.formatDate(today, "yyyy-MM-ddT00:00:00Z"); }
-
Hello,
in my example I used updatedAt as this is one of the internal properties.
Therefore it is not necessary to declare it as a property.
Instead of it you may use any of the properties from your enginio object.
If you have "name" you may use it without any further declaration in your model.Just try to delete the entry "property string..." and try to use it with your clienteEnginio.
-
It returned this:
Cannot assign to non-existent property "text"Here is the code:
EnginioModel { id: paisEnginioModel client: clienteEnginio /*query: { "objectType" : "objects.pais", "sort": [{"sortBy" : "nome","direction" : "desc"}], "query": {"nome": {"$gt": {"$type" : "string","$value": "Brasil"}}}, "limit": 15 }*/ query: { "objectType" : "objects.pais", "sort": [{"sortBy":"updatedAt","direction":"desc"}], "query": {"updatedAt": {"$gt": {"$type": "time","$value": getYesterday()}}}, "limit": 15 } text: updatedAt }
-
Yes, here it is:
EnginioClient { id: clienteEnginio backendId: "MyId" } EnginioModel { id: paisEnginioModel client: clienteEnginio query: { "objectType" : "objects.pais", "sort": [{"sortBy":"updatedAt","direction":"desc"}], "query": {"updatedAt": {"$gt": {"$type": "time","$value": getYesterday()}}}, "limit": 15 } text: updatedAt } ComboBox { id: comboBox1 model: paisEnginioModel }
It returns this message:
QQmlApplicationEngine failed to load component
qrc:/main.qml:70 Cannot assign to non-existent property "text" -
You should not use text: updateAt inside your model.
(In my first post this was only meant as an example...)By assigning the model to the ComboBox the properties from the model are part of the ComboBox.
If you look at the ComboBox example:
ComboBox { width: 200 model: [ "Banana", "Apple", "Coconut" ] }
[ "Banana", "Apple", "Coconut" ] will be replace by your paisEnginioModel.
-
Hi guidupas,
until now I didn't use a ComboBox with QML and Enginio, so I've made this small example:
Assume, we have a collection objects.contacts with custom properties name and address:
{ "name": "Peter", "address": "Somewhere" } { "name": "Peter", "address": "Anywhere" }
and we want to see the addresses for all Peters in the ComboBox:
import QtQuick 2.3 import QtQuick.Controls 1.2 import Enginio 1.0 Rectangle { width: 500; height: 200 EnginioClient { id: client backendId: "myBackendID..." onError: console.log(reply.errorCode + ": " + reply.errorString) } EnginioModel { id: eModel client: client query: { "objectType": "objects.contacts", "query" : {"name": "Peter"} } } ComboBox { model: eModel textRole: "address" } }
And your ComboBox will contain:
Somewhere
AnywhereHope, it helps a bit...
-
Hi,
AFAIK, the talk is about the client library, not the service
-
Currently I only saw this on the mailing list. If that be the case, it will be properly announced. The deprecation just means that there won't be further development on the client part except security related stuff. The code itself isn't going to disappear.
-
I was just starting to learn engin.io but according to the 5.6 roadmap the module will be deprecated http://wiki.qt.io/New_Features_in_Qt_5.6). What would be the recommanded way to communicate with an EDS backend from a qml mobile app? Even if the api will remains I feel it is not advisable to start a new project with an ingoing deprecated module...
-
From https://developer.qtcloudservices.com/eds/references/sdk-libraries It looks like there's something in the work.