最近,我一直在尝试学习如何使用 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].id
和hello.world[0].message
来自aDocument
。如果您添加另一个文档aDocument2
,则会有两行。
也许它应该扩展它在其中找到的列表。但该类的描述Query
可能说一个结果对应一个文档:
Query 类根据使用给定 Index 的查询生成经过筛选的文档列表。