0

Eddy Verbruggen의 nativescript-plugin-firebase 플러그인을 사용하여 Firebase 데이터베이스의 노드 값을 읽으려면 어떻게해야합니까?NativeScript를 사용하여 Firebase 데이터베이스에서 특정 노드 읽기

내가 경로의 내용을 읽고 싶습니다.

/players/{player_id} 

(아이폰 OS SDK에서) FIRDatabaseRef.observeSingleEvent (비슷한) 또는 firebase.database는() 번() 거기를 (에 js SDK)?

firebase.addValueEventListener()를 사용하여 시도한 nativescript-plugin-firebase 플러그인에서 매개 변수로 콜백을 수신 했으므로 대신 읽기 값으로 Promise를 반환하는 메소드가 필요합니다. 또한 읽기를 수행 한 후에는 수동으로 관찰자를 제거해야합니다.

firebase.query()를 사용하는 것은 특정 경로에서 단일 값을 읽는 필터, 범위 및 쿼리를 설정해야하기 때문에 적절하지 않은 것으로 보입니다. 반드시 더 좋은 방법이 존재해야합니다!

감사합니다.

답변

0

나는 singleEvent = true로 firebase.query()를 사용했다.

once(path, key) { 
    return firebase.query(
    ()=>{}, 
     path, 
     { 
     singleEvent: true, 
     orderBy: { 
      type: firebase.QueryOrderByType.KEY 
     }, 
     ranges: [{ 
      type: firebase.QueryRangeType.EQUAL_TO, 
      value: key 
     }], 
     limit: { 
      type: firebase.QueryLimitType.FIRST, 
      value: 1 
     } 
     }) 
     .then(
     queryResult => { 
      // A query result contains a dictionary containing all objects that matched the query criteria. As we are interested on obtaining a single object, we can assume that dictionary will have only a single element. 
      // 
      let queryValue = queryResult.value; 
      let keys = Object.keys(queryValue); 
      if (keys.length > 0) { 
      let key = keys[0] 
      let value = queryValue[key]; 
      return Promise.resolve(value); 
      } else { 
      return Promise.resolve(null); 
      } 
     } 
    ) 
    } 

과 같이 사용할 수 있습니다 :

once("/players", userId).then(userData => {console.log(userData)}) 

내가 정말이 방법을 좋아 모르겠어요이를 위해 내가 한 번()라는 함수를 만들었습니다. 특정 노드에 액세스하기 위해 쿼리를 사용하면 어려울 수 있습니다. 나는 여전히 더 나은 해결책을 찾고있다. 감사.