2017-10-24 2 views
0

실시간 데이터베이스 (Firebase)에서 값을 업데이트 할 수있는 API를 만들고 있습니다. ClaudiaJS를 사용하여 API를 생성합니다. 기본적으로 API는 학급의 학생 수를 1 년 단위로 갱신합니다.Firebase의 실시간 데이터베이스 업데이트

내가 무슨 짓을 :

실시간 데이터베이스 (중포 기지)

class 
|__2015 
| |__numberOfStudent: 50 
|__2016 
     |__numberOfStudent: 60 

이 같은 JSON로 내보내기 :

{ 
    "class": { 
    "2015": { 
     "numberOfStudent": 50 
    }, 
    "2016": { 
     "numberOfStudent": 60 
    } 
    } 
} 

자바 스크립트 파일 (ClaudiaJS) :

var ApiBuilder = require('claudia-api-builder'); 
api = new ApiBuilder(); 
module.exports = api; 

var admin = require("firebase-admin"); 

var serviceAccount = require("./xxxxxxx-firebase-adminsdk-nxxxxx.json"); 

admin.initializeApp({ 
    credential: admin.credential.cert(serviceAccount), 
    databaseURL: "https://xxxxxx.firebaseio.com" 
}); 

api.post('/addmore/{year}/{number}', function (request) { 
    var database = admin.database().ref('class'); 

    //Params 
    var year = request.pathParams.year; 
    var number = request.pathParams.number; 

    var ref = year + '/numberOfStudent'; // '2015/numberOfStudent' 

    database.update({ 
     ref : parseInt(number) // "2015/numberOfStudent" : 60 
    }); 

    return 'Update successfully'; 

}); 

내가 ru 일 때 N 우체부의 API :

http://xxxxapi.com/addmore/2015/55

무슨 일이 : API는 '성공적으로 업데이트'를 대답하지만, 데이터베이스는 갱신을하지 않았다. 코드 database.update()이 전혀 작동하지 않는 것으로 보입니다.

이 어떤 제안은 매우 update 호출이 비동기 적으로 발생

답변

1

감사, 그래서 현재 returnupdate 완료되기 전에 발생한다.

updatePromise를 반환하므로 다음 사항을 확인하시기 바랍니다

return database.update({ref : parseInt(number)}) 
    .then(() => 'Update successfully') 
    .catch(error => /* Code to handle error */); 
+1

안녕 @Jeff을 일했다. 귀하의 빠르고 정확한 답변 주셔서 감사합니다.^_ ^ –

관련 문제