在我的Flutter项目中,我使用Appwrite作为数据库(Firebase的替代)。
当我试图获取collection
时,它返回Instance of 'DocumentList'
,但我无法将对象解密为json格式。
代码如下:
import 'package:appwrite/appwrite.dart';
void main() { // Init SDK
Client client = Client();
Databases databases = Databases(client);
client
.setEndpoint('https://cloud.appwrite.io/v1') // Your API Endpoint
.setProject('5df5acd0d48c2') // Your project ID
;
Future result = databases.listDocuments(
databaseId: '[DATABASE_ID]',
collectionId: '[COLLECTION_ID]',
);
result
.then((response) {
print(response); // Instance of 'DocumentList'
}).catchError((error) {
print(error.response);
});
}
以下是DocumentList
的格式:
{
"total": 5,
"documents": [
{
"$id": "5e5ea5c16897e",
"$collectionId": "5e5ea5c15117e",
"$databaseId": "5e5ea5c15117e",
"$createdAt": "2020-10-15T06:38:00.000+00:00",
"$updatedAt": "2020-10-15T06:38:00.000+00:00",
"$permissions": [
"read(\"any\")"
]
}
]
}
如何处理对象和解密模型的响应?请帮帮忙。
1条答案
按热度按时间wgeznvg71#
DocumentList
的源代码是:如您所见,它有一个
documents
属性,因此您可以像response.documents
一样访问它。Document
的源代码是:在
Document
中,有一个data
属性,它包含您添加到Collection中的自定义属性。因此,(假设response.documents
至少有1个Document
,并且Collection有一个Attribute,其键为myCustomAttribute
),您可以执行response.documents.first.data['myCustomAttribute']
。与您使用的任何软件包或语言一样,请确保:
1.使用IDE的autocomplete/intellisense获取有关您正在使用的任何内容的更多信息。您的IDE还应该能够非常容易地深入到类的源代码中
1.可以使用调试器设置断点并检查对象以查看内部内容以及如何使用它们
1.阅读文档和/或API参考
顺便说一下,你只“解密”加密的东西。通常,API会返回一个JSON字符串,您可以对其进行“解码”,将其从字符串转换为Map。