타임 스탬프가 위에있는 메시지가 있어도 아무 것도 반환하지 않습니다. 제대로 정렬되지Firebase .queryStarting not working (Swift)
코드 :
이let messagesRef = FIRDatabase.database().reference().child("all-messages").child(messageId).queryOrdered(byChild: "timestamp").queryStarting(atValue: 1511130644)
중포 기지의
전체 코드가 호출
FIRDatabase.database().reference().child("users").child(currentUserUid).child("timestampOfLastVisit").observeSingleEvent(of: .value, with: { (snapshot) in
timestamp = snapshot.value as! NSNumber
groupMessagesRef = FIRDatabase.database().reference().child("groups").child(groupId).child("messages")
groupMessagesRef.observe(.childAdded, with: { (snapshot) in
if self.sentMessage {
let messageId = snapshot.key
let messagesRef = FIRDatabase.database().reference().child("all-messages").child(messageId).queryOrdered(byChild: "timestamp").queryStarting(atValue: 1511130644)
messagesRef.observeSingleEvent(of: .value, with: { (snapshot) in ...
관련 중포 기지 JSON (가짜 데이터를 명백하게) :
{
"all-messages" : {
"-KzLOuvEdLWy7vfc2XsT" : {
"fromId" : "zhBZyAVGvAMZWi4QhvKDu7qb3Qr1",
"groupId" : "-Kxk3kA9I8OEvNmFcavL",
"isStarred" : true,
"text" : "This should show",
"timestamp" : 1511130640
},
"-KzLOw5OxZ4P_I0d70gZ" : {
"fromId" : "zhBZyAVGvAMZWi4QhvKDu7qb3Qr1",
"groupId" : "-Kxk3kA9I8OEvNmFcavL",
"isStarred" : false,
"text" : "And so should this",
"timestamp" : 1511130644
},
"-KzLS4uwDtpW6wHNxrmc" : {
"fromId" : "zhBZyAVGvAMZWi4QhvKDu7qb3Qr1",
"groupId" : "-Kxk3kA9I8OEvNmFcavL",
"isStarred" : false,
"text" : "1",
"timestamp" : 1511131471
},
"-KzLS5FvASnj_ky4WQkd" : {
"fromId" : "zhBZyAVGvAMZWi4QhvKDu7qb3Qr1",
"groupId" : "-Kxk3kA9I8OEvNmFcavL",
"isStarred" : false,
"text" : "2",
"timestamp" : 1511131472
}
},
"groups" : {
"-Kxk3kA9I8OEvNmFcavL" : {
"groupCreator" : "zhBZyAVGvAMZWi4QhvKDu7qb3Qr1",
"groupDescription" : "Group",
"groupImageUrl" : "https://firebasestorage.googleapis.com/v0/b/groupchat1-a1da3.appspot.com/o/group_profile_images%2FA4DDA286-E7A3-4F96-ABF0-5717F4029C33.png?alt=media&token=6ad79728-74fd-405f-abbf-247dae4684b5",
"groupMemberOneSignalIds" : {
"5905a2f5-dfa3-46d7-964f-596bd2f2004a" : true,
"67b9cb2a-6583-45b4-9fed-93cf333e9ca4" : true,
"a1bf9ed9-0959-4c88-974b-5a829c1cdcc9" : true,
"f2fb84b9-86af-40e7-8667-989a95b2e282" : true
},
"groupMembers" : {
"3lQiuzudFGW51UwQ4Mseu8aOxyu2" : true,
"JF7SCe3VUcWJi1ujumx0VpyaG5s1" : true,
"YEbVehx0cqTvNaKrJTcs5GnRLGM2" : true,
"zhBZyAVGvAMZWi4QhvKDu7qb3Qr1" : true
},
"groupName" : "1",
"groupTags" : {
"-Kxk3kHxMuWQHEsaWN5k" : "1",
"-Kxk3kHyMB2OL5pNAfW1" : "1",
"-Kxk3kHyMB2OL5pNAfW2" : "1"
},
"messages" : {
"-KzLOuvEdLWy7vfc2XsT" : 1,
"-KzLOw5OxZ4P_I0d70gZ" : 1,
"-KzLS4uwDtpW6wHNxrmc" : 1,
"-KzLS5FvASnj_ky4WQkd" : 1
},
"starredMessages" : {
"-KzLOuvEdLWy7vfc2XsT" : 1511204335
}
},
"-Kxn_yTAZvkPls-_s8He" : {
"groupCreator" : "JF7SCe3VUcWJi1ujumx0VpyaG5s1",
"groupDescription" : "Group 3",
"groupImageUrl" : "https://firebasestorage.googleapis.com/v0/b/groupchat1-a1da3.appspot.com/o/group_profile_images%2FD2C68A8F-33DC-43C6-8C99-762315760208.png?alt=media&token=aae87339-877e-484e-a0e1-a2e13455176c",
"groupName" : "Group 3",
"groupTags" : {
"-Kxn_ygovR7mQIph3WiC" : "1",
"-Kxn_ygovR7mQIph3WiD" : "1"
}
}
},
"users" : {
"JF7SCe3VUcWJi1ujumx0VpyaG5s1" : {
"email" : "[email protected]",
"groups" : {
"-Kxk3kA9I8OEvNmFcavL" : true,
"-Kxk3n99i43MYECm1Ix8" : true,
"-KxuBPAPBIcROMEtNujW" : true,
"-KxuET1pZGg2x_aJvRkU" : true
},
"profileImageURL" : "https://firebasestorage.googleapis.com/v0/b/groupchat1-a1da3.appspot.com/o/profile_images%2F246CA55C-446D-4A24-8BE6-8B5B9C0F27AF.png?alt=media&token=47022ccd-1c92-460a-8630-e74a0d68bc4a",
"searchUsername" : "madi",
"timestampOfLastVisit" : 1511241228,
"username" : "Madi"
},
"zhBZyAVGvAMZWi4QhvKDu7qb3Qr1" : {
"email" : "[email protected]",
"groups" : {
"-Kxk3kA9I8OEvNmFcavL" : true,
"-Kxk3n99i43MYECm1Ix8" : true
},
"profileImageURL" : "https://firebasestorage.googleapis.com/v0/b/groupchat1-a1da3.appspot.com/o/profile_images%2FBDC4020E-9F54-4F80-A4DC-668804215DE3.png?alt=media&token=ec2c8875-e6e4-40d5-8c07-3d743bf4ea16",
"searchUsername" : "connor",
"timestampOfLastVisit" : 1511205356,
"username" : "Connor"
}
}
}
무엇 인쇄 (스냅 샷) 인쇄물 :
,288,인쇄 (messageRef는)
(/all-messages/-KzLOw5OxZ4P_I0d70gZ {
i = timestamp;
sp = 1511130644;
})
이 질문은 모든 곳에서 가능합니다. 코드에서 참조 된 노드는 * all-messages *, * timestampOfLastVisit *, * group * 링크에 표시되지 않습니다. 일반적으로 Firebase 구조의 스 니펫을 TEXT (Firebase 콘솔 -> JSON 내보내기)로 포함시키는 것이 가장 좋습니다. 존재하지 않는 노드가 참조되고있는 것처럼 해당 특정 노드를 처리하는 코드 단편을 포함 시키면 결과에 노드가 발견되지 않습니다. 어쩌면 messagesRef가 실제로 참조하는 메시지 즉, print (messagesRef)가 도움이 될 것입니다. 질문을 업데이트 할 수 있다면 문제를 찾을 수 있습니다. – Jay
오. 마지막 쿼리에서 .queryOrdered (byChild : "timestamp")가 누락되어 Firebase가 쿼리중인 노드를 인식합니다. – Jay
@Jay 업데이트 된 게시물.그것은 .queryStarting (atValue :) 제거하면 완벽하게 작동하지만 모든 메시지를로드합니다. 그러나, 사용자가 마지막으로 방문한 이후로 보낸 메시지 만로드하므로 .queryStarting (atValue :)을 포함하고 싶습니다. 그러나 이로 인해 스 냄샷 값이 널 (NULL)이되며 해당 시간 소인 이후의 메시지뿐만 아니라 모든 메시지를 계속 조회합니다. 고마워요. – connorvo