2017-12-30 54 views
-1

Data Structure 위의 구조를 가진 테이블에 Firebase Realtime Database에 데이터를 삽입합니다. 데이터의 키는 push을 기반으로 자동 생성됩니다. 여러 가지 항목이 만들어지면 특정 조건으로 인해 항목 중 하나를 삭제해야 할 수도 있습니다. 항목을 삭제할 시점에서 삭제하려는 노드의 값 중 일부를 createdAtcreatedForPostID과 같이 알 수 있습니다. 하지만 firebase 데이터베이스의 push 기능을 사용하여 자동 생성 된 키를 알 수는 없습니다. createdAtcreatedForPostID의 조합은 고유 한 조합을 만들고 이러한 항목은 데이터베이스에 하나만 존재해야합니다.Firebase 기능 - 키를 모르는 데이터 삭제

OUTBOUND에서 전체 노드를 검색하지 않고 항목을 식별하는 가장 효율적인 방법은 무엇입니까?

push을 사용하는 이유는 Firebase이 효율적이고 쓰기 충돌이 발생하지 않기 때문입니다. 나는 또한 push에 의해 제공되는 날짜/시간에 의한 자동 정렬에 의존한다.

효율적인 방법을 찾을 수없는 경우 날짜/시간 스탬프를 사용하여 자체 키를 생성합니다. 그러나 나는 이것이 누군가가 전에 풀었고 그러므로 나를 인도 할 수있는 문제라고 희망한다.

모든 의견을 환영합니다.

답변

1

조건을 충족하는 항목을 찾으려면 쿼리를 실행해야합니다.

조건에 여러 속성이 있고 Firebase 데이터베이스가 단일 속성에서만 쿼리 할 수 ​​있으므로 here과 같이 값을 단일 속성에 결합해야합니다.

은 그럼 당신은 그 결합 특성에 대한 쿼리를 실행하고 반환 항목을 삭제할 수 있습니다 :

var query = ref.orderByChild("createForPostID-createdAt").equalTo("20171229_124904-20171230_200343"); 
query.once("value", function(snapshot) { 
    snapshot.forEach(function(child) { 
    child.ref.remove(); 
}) 
+0

감사합니다. @ frank-van-puffelen –

0

나는 깨달았다 프랭크의 대답은, 내가 그것을 필요로하기 때문에 자신의 제안에 따라 고유 한 속성을 만드는 데 필요한 감안할 때 미래의 쿼리를 할 수 있습니다. 그러나 그것은 같았다 나는 키로서 그 고유의 속성을 사용하는 대신 push

그래서 전체적인 관점에서 같다을 사용하여 더 나을 수 있다는 것을, 자신의 key 대신 push의 생성하는 것이 더 효율적이 될 수있는 응용 프로그램의 경우 createdelete 기능이 모두 필요합니다. push에 의존하는 것은 데이터가 생성되고 삭제가 앱의 큰 기능이 아닌 경우에만 의미가 있습니다.

결론적으로 Firebase 데이터의 경우 데이터 createdelete 모두를 수행하는 가장 효율적인 방법은 고유 한 키를 직접 만들어야합니다.