Я искал в следующей документации Google firestore и особенно в части обновления массива. они упоминают:
Обновление элементов в массиве
Если ваш документ содержит поле массива, вы можете использовать arrayUnion () и arrayRemove () для добавления и удаления элементов. arrayUnion () добавляет элементы в массив, но только элементы, которых еще нет. arrayRemove () удаляет все экземпляры каждого данного элемента.
проблема в том, что Android studio не может разрешить метод arrayUnion.
соответствующая часть кода:
public void onClick(View view) {
if(isStringValid(newListName.getText().toString())){
currListName = newListName.getText().toString().trim();
itemList mList = new itemList(currListName , mAuth.getCurrentUser().getEmail());
Map<String , Object> listMap = new HashMap<>();
listMap.put(KEY_LIST_NAME , currListName);
listMap.put(KEY_OWNER , mAuth.getCurrentUser().getEmail());
listMap.put(KEY_HAS_ACCESS , Arrays.asList(mAuth.getCurrentUser().getEmail()));
userRef.update("hasAccess" , FieldValue.arrayUnion(currListName));
Gradle:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0-rc02'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
implementation 'com.android.support:support-v4:28.0.0-rc02'
implementation 'com.android.support:design:28.0.0-rc01'
implementation 'com.google.firebase:firebase-core:16.0.3'
implementation 'com.google.firebase:firebase-auth:16.0.3'
implementation 'com.google.firebase:firebase-firestore:17.0.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.google.android.gms:play-services-auth:16.0.0'
}
их код:
DocumentReference washingtonRef = db.collection("cities").document("DC");
washingtonRef.update("regions", FieldValue.arrayUnion("greater_virginia"));