我正在尝试将数据添加到Firebase Firestore的文档中。我已经添加了一个名为users
的集合。同时,读/写权限目前处于打开状态。我正在关注this doc。而且我无法向文档中添加数据。
这就是我想要做的:
private void getNewUserSnapShot() {
FirebaseFirestore db = FirebaseFirestore.getInstance();
FirebaseUser user = firebaseAuth.getCurrentUser();
Log.d(TAG, "getNewUserSnapShot: user_uid: " + user.getUid());
DocumentReference user_doc_ref = db.collection("users").document();
Log.d(TAG, "getNewUserSnapShot: document ref: " + user_doc_ref.getId());
Map<String, Object> user_data = new HashMap<>();
user_data.put("name", user.getDisplayName());
user_data.put("email", user.getEmail());
user_data.put("profile_url", user.getPhotoUrl());
Log.d(TAG, "getNewUserSnapShot: user_data: " + user_data.toString());
user_doc_ref
.set(user_data)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Toast.makeText(LoginActivity.this, task.toString(), Toast.LENGTH_LONG).show();
if (task.isSuccessful()) {
Log.d(TAG, "getNewUserSnapShot: success");
} else {
Log.d(TAG, "getNewUserSnapShot: failed");
}
}
});
}
在日志中,我仅看到以下内容(无论是失败还是成功的日志):
2020-03-04 19:48:47.489 30744-30744/com.example.expenditure D/LoginActivity: getNewUserSnapShot: user_uid: iXOzfju6kORnhuUND8zFCPTzxY93
2020-03-04 19:48:47.499 30744-30744/com.example.expenditure D/LoginActivity: getNewUserSnapShot: document ref: 7AluPzcYMLzDKLh8YtBt
2020-03-04 19:48:47.499 30744-30744/com.example.expenditure D/LoginActivity: getNewUserSnapShot: user_data: {profile_url=https://someurl/security/reasons, name=Nikhil Wagh, email=null}
当我看到Firebase控制台时,根据应已创建的日志,找不到ID为7AluPzcYMLzDKLh8YtBt
的文档。
有一个类似的问题:Unable to add information to Cloud Firestore但没有正确的答案。
有人可以帮忙吗?我在做什么错了?
答案 0 :(得分:0)
问题是user.getPhotoUrl()
返回了url
,但是Firestore不支持url。需要将该URL强制转换为字符串,然后它才能工作。
在将数据添加到Firestore之前将URL转换为字符串。