无法解析方法“ arrayUnion”-firestore

时间:2018-09-04 06:45:43

标签: android google-cloud-firestore

我正在查看以下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"));

2 个答案:

答案 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方法,第二个有它。检查在您的代码文件中导入了什么类。