我正在查看以下firestore的google文档,尤其是在更新数组方面。他们提到:
更新数组中的元素 如果文档包含数组字段,则可以使用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));
等级:
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"));
答案 0 :(得分:0)
根据发行说明,从客户端SDK版本17.0.5开始支持阵列操作。这是发行说明的link。
无论如何,请更新您的客户端SDK以使用最新的Firestore API。
答案 1 :(得分:0)
我在Firebase Firestore SDK(21.0.0)中找到了两个FieldValue类:
com.google.firebase.firestore.model.value.FieldValue
com.google.firebase.firestore.FieldValue
第一个没有arrayUnion方法,第二个有它。检查在您的代码文件中导入了什么类。