Metode AuraEnabled tidak mendukung tipe kembalian dari Map <String, Set <String>>
Ini adalah Kode saya di puncak, Tetapi metode Error-AuraEnabled yang ditampilkan tidak mendukung tipe kembalian Map<String, Set<String>>
Saya tidak mengerti apa yang salah dalam kode saya dan mengapa map<string, set<string>>tidak berfungsi, sementara Map<string, list<string>>bekerja dengan baik.
public class testmap {
@AuraEnabled
Public static Map<string,set<string>> getmap() {
Map<string,set<string>> accountmap=new Map<string,set<string>>();
set<string> valueset=new set<string>();
valueset.add('Value1');
accountmap.put('Key1',valueset);
system.debug('Maptest'+accountmap);
return accountmap;
}
}
Jawaban
Kesalahan ini terjadi karena, di suatu tempat di sepanjang jalan, Set tidak didukung dikirim ke klien, jadi daripada merusak sesuatu, mereka tidak mengizinkan jenis pengembalian itu untuk saat ini. Saya berasumsi bahwa salesforce.com telah menutup jenis pengembalian ini sampai konversi pada klien cocok, daripada secara implisit mengonversinya menjadi Array, yang dapat merusak rencana mereka untuk perubahan masa depan ketika Set didukung dengan benar (bayangkan kode Anda suatu hari rusak karena tipe klien berubah dari Array ke Set). Solusi yang jelas, untuk saat ini, adalah mengembalikan List. Anda dapat menggunakan metode pembantu untuk ini:
static Map<String, List<String>> convertToMapList(Map<String, Set<String>> source) {
Map<String, List<String>> result = new Map<String, List<String>>();
for(String key: source.keySet()) {
result.put(key, new List<String>(source.get(key)));
}
return result;
}
Penghentian ini akan memungkinkan Anda untuk dengan mudah beralih kembali ke Map<String, Set<String>>saat / jika jenis data ini didukung, dan juga menghindari penulisan ulang total kode Anda.