U1db-Qt 在 ListView 中无法按预期工作(Ubuntu Touch 应用程序开发)

U1db-Qt 在 ListView 中无法按预期工作(Ubuntu Touch 应用程序开发)

最近,我一直在尝试学习如何使用 U1db 库(如果您这么称呼它的话),但它并没有按照我预期的方式工作。

这是我的代码:

 import QtQuick 2.4
 import Ubuntu.Components 1.3
 import U1db 1.0 as U1db

 MainView {
     objectName: "mainView"
     applicationName: "u1bdtest.evanlinjin"

     width: units.gu(100); height: units.gu(75);

     U1db.Database {
         id: aDatabase
         path: "aU1DbDatabase"
     }

     U1db.Document {
         id: aDocument
         database: aDatabase
         docId: 'helloWorld'
         contents: {"hello": {"world": [{"id": 3, "message": "Hello world."},
                                        {"id": 3.33, "message": "World, hello."},
                                        {"id": 3.66, "message": "HELLO WORLD!!!"}
                 ]}}
     }

     U1db.Index {
         id: documentIndex
         database: aDatabase
         expression: ["hello.world.id", "hello.world.message"]
     }

     U1db.Query {
         id: aQuery
         index: documentIndex
     }

     Page {
         title: i18n.tr("U1BdTest")

         Column {
             spacing: units.gu(1)
             anchors { margins: units.gu(2); fill: parent;}

             Label {id: label; objectName: "label"; text: i18n.tr("A U1Bd Test.");}

             ListView {
                 width: parent.width; height: parent.height; model: aQuery;
                 delegate: Text {x: 66; text: "(" + index + ", " + contents.id + ") " + contents.message}
             }
         }
     }
 }

以下是我的“ListView”中的预期结果:

  • (0,3)你好,世界。
  • (1、3.33)世界,你好。
  • (2,3.66)你好,世界!!!

然而,只有“(0,3)你好,世界。”被展示。

截屏

答案1

显然,它是在文档中迭代,而不是在某个文档内部迭代。

它花费了hello.world[0].idhello.world[0].message来自aDocument。如果您添加另一个文档aDocument2,则会有两行。

也许它应该扩展它在其中找到的列表。但该类的描述Query可能说一个结果对应一个文档:

Query 类根据使用给定 Index 的查询生成经过筛选的文档列表。

相关内容