fetchAll static method Null safety
Fetches all objects in objectList
.
Implementation
static Future<List<LCObject>> fetchAll(List<LCObject> objectList) async {
Set<LCObject> objects = objectList.where((item) {
return item.objectId != null;
}).toSet();
List requestList = objects.map((item) {
String path = '/$APIVersion/classes/${item.className}/${item.objectId}';
return {'path': path, 'method': 'GET'};
}).toList();
// 发送请求
Map<String, dynamic> data = {
'requests': _LCEncoder.encodeList(requestList)
};
List results = await LeanCloud._httpClient.post('batch', data: data);
// 反序列化为 Object 数据
Map<String, _LCObjectData> map = new Map<String, _LCObjectData>();
results.forEach((item) {
if (item.containsKey('error')) {
int code = item['code'];
String message = item['error'];
throw ('$code : $message');
}
Map<String, dynamic> data = item['success'];
map[data['objectId']] = _LCObjectData.decode(data);
});
objectList.forEach((object) {
_LCObjectData? objectData = map[object.objectId];
object._merge(objectData);
});
return objectList;
}