나는 코드의 부족이 단지 "나는 어디에서 시작 해야할지 정말로 모른다"더 많은 것을 시도하지 않는 것이 아니기 때문에 나는 새로운 firebase를 가지고 있습니다.새 게시물 만 반환하는 Firebase 쿼리?
"오래된"이하의 게시물 만 표시하려고합니다. 매 초마다 쿼리를 보내려면 타이머를 실행해야합니다 (문제가 너무 많이 발생하지 않는다고 가정 할 때?) 현재 게시물이 10 분 넘지 않았는지 확인하고 if 그것들은 질의가 단지 그것들을 리턴해서는 안된다.
나는 사용자가 타임 스탬프가 작성된 게시물을 만들 때 설정해야합니다.
셋업은 다음과 같습니다
Posts
02983094jfksdflkaj3l
timestamp: 23478923019
은 내가 orderByValue 할 필요가 있으리라 믿고있어? 게시물을 타임 스탬프별로 정렬 한 다음 일종의 제한으로 반환하지만 모든 것을 매핑하는 방법을 모르겠습니다.
오른쪽 방향의 한 점이 크게 인정 될 것입니다.
미리 감사드립니다.
편집 : 더 이상 collectionview ...에 게시물이 표시되지 않으며 10 분 미만의 쿼리를 충족해야하는 게시물이 몇 개라도 상관없이 하나만 반환됩니다.
아래와 같이 스냅 샷에서 .value 리턴을 얻지 못했습니다 ... 타임 스탬프 스냅 샷에 표시된 타임 스탬프 값을 반환해야합니까?
override func viewWillAppear(animated: Bool) {
let cutoff = UInt64(1000 * floor(NSDate().timeIntervalSince1970) - 10*60*1000);
let cutoffFloat = Float(cutoff) // <-- woudnlt take a UInt64 as an AnyObject. I assume its ok to just do this?
DataService.ds.REF_POSTS.queryOrderedByChild("timestamp").queryStartingAtValue(cutoffFloat).observeSingleEventOfType(.ChildAdded) { (snapshot: FIRDataSnapshot) in
print("child added") // <------- isn't ever getting called
self.Posts = []
if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] {
for snap in snapshots {
print("timestamp snap: \(snap)") // <---- returns timestamp snap: Snap (timestamp) 23904819242
if let postDict = snap.value as? Dictionary<String, AnyObject> {
print(snap.value)// <----- Returns nothing
let key = snap.key
let post = Post(postKey: key, dictionary: postDict)
self.Posts.append(post)
}
}
}
self.collectionView.reloadData()
}
그것이 내가 컬렉션보기 채울 전에 사용하던 내 코드 도움이다 그러나 여기 있었다면 나도 몰라 :
여기DataService.ds.REF_POSTS.observeEventType(.Value) { (snapshot: FIRDataSnapshot) in
self.Posts = []
if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] {
for snap in snapshots {
print(snap)
if let postDict = snap.value as? Dictionary<String, AnyObject> {
let key = snap.key
let post = Post(postKey: key, dictionary: postDict)
self.Posts.append(post)
}
}
}
print("got here")
self.collectionView.reloadData()
}
타이머가 필요하지 않을 수 있으며 지난 10 분 동안 1024 개의 게시물이있는 상황을 고려할 수 있습니다. 해당 게시물 중 몇 개를 고객에게 제공해야합니까? 내 생각 엔 당신이 모든 것에 관심을 가질 수는 있지만 한 번에 20 개 (예를 들어) 또는 가장 최근 20 개를보고 싶을뿐입니다. Firebase는 비동기로 기억하십시오 - 노드 노드에 옵저버를 추가하면됩니다. 자동으로 새 게시물에 대한 알림을 받게됩니다. * 항상 최신 게시물이 표시됩니다. 폴링은 Firebase가 작업을 수행함으로써 완전히 제거 될 수 있습니다. – Jay
@Jay 친구 그룹에서 한 번에 9 개의 게시물을 한 번에 한 사용자에게 표시 할 수 있으며, 구현하려고하는 기능에는 10 분의 비트가 중요합니다. 제한된 양의 "쇼 시간"이있는 게시물과 상호 작용하는 앱의 요점으로 표시되는 게시물이 없으면 괜찮습니다. 사용자의 친구의 게시물을 9 개로 제한하면 홍수와 관련된 문제가 없어야합니다. 나는 또한 이것이 최선의 방법이라고 가정하고 있습니다. 이런 식으로 가면서 눈부신 문제가 보이지 않습니까? – Noowoo