2014-09-25 8 views
1

먼저 내 응용 프로그램을 구축 할 때, 내가 수동으로 생성 한 데이터에 액세스하고 그것은 다음과 유사한 모습 :코어 아약스 푸시로 만든 중포 기지 데이터()

{ 
    "data": { 
    0: { 
     "author": "gracehop", 
     "title": "Announcing COBOL, a New Programming Language" 
    }, 
    1: { 
     "author": "alanisawesome", 
     "title": "The Turing Machine" 
    } 
    } 
} 

내가 코어 아약스와 반복 처리를 사용하여 데이터를 검색 할 수 있습니다 이 같은 문제없이 사용자 정의 구성 요소를 통해 :

<template is="auto-binding"> 
     <core-ajax id="ds" auto url="https://mysite.firebaseio.com/data.json" response="{{data}}"></core-ajax> 
     <my-items items="{{data}}"></my-items> 
    </template> 

그러나, 지금은 푸시를 사용하여 내 응용 프로그램에 새로운 데이터를 만들려고 해요(). 문제는 새로운 데이터는 다음과 같습니다이다 :

가 첫 번째 본능 사용할 수 있습니다 어떤 상태, their documentation

{ 
    "data": { 
    "-JRHTHaIs-jNPLXOQivY": { 
     "author": "gracehop", 
     "title": "Announcing COBOL, a New Programming Language" 
    }, 
    "-JRHTHaKuITFIhnj02kE": { 
     "author": "alanisawesome", 
     "title": "The Turing Machine" 
    } 
    } 
} 

이 라인을 설정() 자동 증가와 아이들을 저장하기 정수 인덱스 ... Firebase는 새로운 자식이 지정된 Firebase 참조 에 추가 될 때마다 고유 ID를 생성하는 push() 함수를 제공합니다. 목록에있는 각 요소에 대해 고유 한 하위 이름을 사용하면 여러 클라이언트가 쓰기 충돌을 염려하지 않고 동일한 위치에 동시에 자식을 추가 할 수 있습니다. push()에 의해 생성 된 고유 ID는 타임 스탬프를 기반으로하므로 목록 항목 은 자동으로 시간순으로 정렬됩니다.

항목을 푸시 한 후 더 이상 내 목록에 항목이 표시되지 않습니다. push()를 사용하여 만든 내용을 삭제하면 다른 항목이 다시 표시됩니다.

+0

당신은 '폴리머와이 태그 : 여기

<template repeat="key in keys"> <p>This is your uniqueId generated keys: {{keys}}</p> <p>This is the data in the keys: {{data[key]['author']}}</p> </template> 

는 심판이다 '하지만 폴리머 코드가 보이지 않는데 ... – robdodson

+0

죄송합니다, 그것을 추가했습니다. –

+2

Firebase'push'는 배열이 아닌 맵을 생성하고'template repeat'는 배열을 소비합니다. 중간 배열을 만들거나 키를 반복해야합니다. –

답변

1

core-ajax 요소를 사용하는 대신 기본 firebase-element을 사용해야합니다. 그런 다음 location 속성을 고유 한 Firebase URL에 할당하여 데이터와 연결 한 다음 data 속성으로 데이터에 액세스하십시오. 마찬가지로 데이터 반복을 원할 경우 Polymer는 현재 배열을 통해서만 반복하므로 keys 속성에 액세스해야합니다.

귀하의 중포 기지 요소는 다음과 같이 보일 것입니다 :

<firebase-element id="base" location="https://YOUR.firebaseio.com/" 
    data="{{data}}" keys="{{keys}}"></firebase-element> 

당신은 다음과 같이 액세스 할 : http://polymer.github.io/firebase-element/components/firebase-element/

1

항목이 누락되거나 삭제되지 않았습니다. 실제로 계정 대시 보드를 확인하면 숫자 색인과 푸시 ID가 모두 표시됩니다. 어떤 일이 발생하면 Firebase's handling of array-like data과 관련이 있습니다. (이것을 이해하기 위해서는 진지하게 읽고 싶습니다.)

본질적으로 순차적 숫자 ID를 사용했기 때문에 데이터는 배열로 처리되어 배열로 반환됩니다. 그러나 문자열을 키로 추가하면 키/값 쌍의 해시이며이를 pojo/json 데이터로 처리합니다 (맞습니다).

Polymer에 대해 많이 알지는 못하지만 그 방법이 배열을 허용하고 객체 키를 반복하지 않는다고 생각합니다. 따라서 데이터를 배열이 아닌 객체로 반복해야합니다.