我需要创建一个双参数异步函数,该函数接收一个数据集合,其中包含名称作为其第一个参数,字符串作为其第二个参数。函数必须搜索数据集合并返回一个列表,其中包含包含作为参数给出的字符串的名称。
例如,集合可以是:
var database = MemoryDatabaseAdapter().database();
var collection = database.collection('names');
await collection.insert(data: {'name' : 'Jonathan'});
await collection.insert(data: {'name' : 'John'});
await collection.insert(data: {'name' : 'Steve'});
var list = await fetchedNames(collection, 'Jo');
for (var i = 0; i < list.length; i++) {
print(list[i]);
}
打印结果应为:
乔纳森
约翰
但是我所能做的就是得到:
{名称:乔纳森}
{名称:约翰}
我做了什么:
import 'package:database/database.dart';
import 'package:database/filter.dart';
main() async {
var database = MemoryDatabaseAdapter().database();
var collection = database.collection('names');
await collection.insert(data: {'name' : 'Jonathan'});
await collection.insert(data: {'name' : 'John'});
await collection.insert(data: {'name' : 'Steve'});
var list = await fetchedNames(collection, 'Jo');
for (var i = 0; i < list.length; i++) {
print(list[i]);
}
}
fetchedNames(collection, name) async {
var kysely = Query(
filter: MapFilter({
'name': KeywordFilter(name)
})
);
var results= await collection.search(query: questionnare);
var documents = results.snapshots;
var list = [];
for (var i = 0; i < documents.length; i++) {
list.add(documents[i].data);
}
return list;
}
我无法从过滤的名称中获得打印,但我可以打印整个行,即。打印结果应为:乔纳森约翰但我所能做的就是{名称:乔纳森}{名称:约翰}
在for循环中,只需将属性的名称添加到变量list
中,例如:
for (var i = 0; i < list.length; i++) {
print(list[i]['name']);
}