반응형
Firestore가 'onSnapshot() requires between 인수'를 슬로우합니다.
현재 사용자가 읽지 않은 메시지를 모두 방화벽에서 가져오려고 합니다.문제는 내 것이onSnapshot()
는 다음 오류를 반환하지만 첫 번째 로드 시 필요한 값을 반환합니다.새 문서가 추가되면onSnapshot(
이 에러가 발생한 후 )는 다시 기동하지 않습니다.
Firebase Error:Query.onSnapshot() 함수에는 1~4개의 인수가 필요하지만 0개의 인수로 호출되었습니다.
현재 사용자가 읽지 않은 모든 메시지를 수신하는 도우미 기능입니다.
async getUnseenMessagesCount() {
const collectionRef = (await firestore()).collection(this.collectionPath) //chats/${user_id+second_identifier/messages}
let allMessagesCount = 0
let currentUserReadMessagesCount = 0
try {
collectionRef.onSnapshot().then(snapshot => {
allMessagesCount = snapshot.docs.length
})
collectionRef
.where('seenBy', '==', '') // compare against empty string because seenBy is userId.
.onSnapshot()
.then(snapshot => {
currentUserReadMessagesCount = snapshot.docs.length
})
} catch (error) {
console.log(error)
}
console.log(allMessagesCount)
console.log(currentUserReadMessagesCount)
console.log(allMessagesCount - currentUserReadMessagesCount)
}
사용자가 참여하는 모든 채팅에서 읽지 않은 모든 메시지 수를 가져오려면 인증 상태 변경 시 활성화되는 vuex 액션 내에서 다음을 수행합니다.
new UserChatsDB(newUser.id).readAll().then(snapshot => { //users/id/chats/{chat_id: user_id+second_identifier}
if (snapshot.length > 0) {
snapshot.forEach(element => {
console.log(element)
const count = new MessagesDB(
element.chat_id
).getUnseenMessagesCount()
console.log(count) //Returns pending Promise
})
}
})
위의 에러의 원인은 무엇입니까?더 나은 방법이 있을까요?데이터베이스 구조가 필요한지 알려주세요.아무쪼록 잘 부탁드립니다!
파이어베이스의 문서에 따르면onSnapshot()
다음과 같이 기능합니다.
async getUnseenMessagesCount() {
const collectionRef = (await firestore()).collection(this.collectionPath) //chats/${user_id+second_identifier/messages}
let allMessagesCount = 0
let currentUserReadMessagesCount = 0
try {
collectionRef.onSnapshot(snapshot => {
allMessagesCount = snapshot.docs.length
})
collectionRef
.where('seenBy', '==', '') // compare against empty string because seenBy is userId.
.onSnapshot(snapshot => {
currentUserReadMessagesCount = snapshot.docs.length
})
} catch (error) {
console.log(error)
}
console.log(allMessagesCount)
console.log(currentUserReadMessagesCount)
console.log(allMessagesCount - currentUserReadMessagesCount)
}
그래서 당신은 당신의 옷을 벗어야 합니다.then()
.
언급URL : https://stackoverflow.com/questions/57903018/firestore-throws-onsnapshot-requires-between-1-and-4-arguments
반응형
'programing' 카테고리의 다른 글
문자를 Java의 ASCII 숫자 값으로 변환 (0) | 2022.06.27 |
---|---|
Java: 경로와 파일 (0) | 2022.06.27 |
Vuex에서 다른 액션 내에서 액션을 호출하는 것은 잘못된 관행입니까? (0) | 2022.06.27 |
디스패치 수신이 값으로 정의되지 않았습니다. (0) | 2022.06.27 |
파일에 대해 DragEnd 이벤트가 발생하지 않음 (0) | 2022.06.27 |