【发布时间】:2018-05-24 14:23:54
【问题描述】:
我正在尝试在我的文档上使用 .set 在其中设置 2 个值,但它给了我这个错误
Field 'friendRequests' is specified in your field mask but not in your input data.
错误是由我的代码中的这一行触发的:
mCollRef.document(documentID).set(tempUser, SetOptions.mergeFields(fieldsToUpdate))
我不使用时一切正常SetOptions,只是mCollRef.document(documentID).set(tempUser)
我在这里做错了什么?
我的代码在这里:
mCollRef.whereEqualTo("userID", clickedUserID)
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful()) {
List<String> fieldsToUpdate = Arrays.asList("friendRequests", "friends");
for(QueryDocumentSnapshot document : task.getResult()) {
User tempUser = document.toObject(User.class);
tempUser.updateFriends(mUsersName, mUsersID, 1);
tempUser.updateFriendRequests(myNoDotEmail, 2);
String friendName = tempUser.getUserName();
String documentID = document.getId();
mCollRef.document(documentID).set(tempUser, SetOptions.mergeFields(fieldsToUpdate))
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(FriendsActivity.this, "Friend Added", Toast.LENGTH_SHORT).show();
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(FriendsActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
值得指出的是,有时它会起作用,比如 1/10 会无缘无故地起作用,而其他 9 次则不起作用
【问题讨论】:
-
显然,键/值对中缺少字段friendRequests?
-
您的字段不存在。你确定你有正确的代码吗?
-
哦,对...我的意思是,字段没有丢失,但是在我在代码中执行的操作之后它是空的。我将在下面发布整个答案,谢谢大家
标签: java android firebase google-cloud-firestore