728x90
//전체 문서를 덮어쓰지 않고 문서의 일부 필드를 업데이트하려면 update() 메서드를 사용합니다.
FirebaseFirestore.getInstance().collection("user").document(view.userSettingSendIdText.text.toString())
.update("userIp", view.userSettingUdpAddressText.text.toString())
.addOnSuccessListener {
Log.d(LOG2, "DocumentSnapshot successfully written!")
toast.cancel()
toast = Toast.makeText(getActivity(), "유저 정보 저장 완료", Toast.LENGTH_SHORT)
toast.setGravity(Gravity.CENTER, 0, 0)
toast.show()
}
.addOnFailureListener { e ->
//Log.d(LOG2, "Error writing document", e)
val str: String = e.message.toString()
Log.d(LOG2, "실패:${str}")
if (str.contains("NOT_FOUND")) {
toast.cancel()
toast = Toast.makeText(getActivity(), "유저 정보를 확인 하세요.", Toast.LENGTH_SHORT)
toast.setGravity(Gravity.CENTER, 0, 0)
toast.show()
}
}
//서버에 업테이트할 항목을 담은 데이터 클래스
data class UserInfo(
var userCctvDescription : String? = null, // 사용자 CCTV 정보
var userCctvId: String? = null, // 사용자 CCTV ID
var userCctvPw: String? = null, // 사용자 CCTV PW
var userRtsp: String? = null, // 사용자 RSTP 주소
)
val userInfo = UserInfo()
userInfo.userCctvDescription = view.cctvDescriptionEditText.text.toString()
userInfo.userCctvId = view.cctvIdEditText.text.toString()
userInfo.userCctvPw = view.cctvPwEditText.text.toString()
userInfo.userRtsp = view.rtspEditText.text.toString()
//SetOptions.merge() 덮어쓰기 방지 하는 함수
FirebaseFirestore.getInstance().collection("user").document(userInformData["userEmail"].toString()).set(userInfo, SetOptions.merge())
.addOnSuccessListener { Log.d(LOG2, "DocumentSnapshot successfully written!") }
.addOnFailureListener { e -> Log.w(LOG2, "Error writing document", e) }
안드로이드 코틀린 파이어 스토어 데이터 지우지 않고 수정 하는 함수
728x90