2017-10-24 5 views
0

リアルタイムデータベース(Firebase)から値を更新できるAPIを作成しています。 ClaudiaJSを使用してAPIを作成する基本的に、APIはクラスの学生数を年ごとに更新します。Firebaseでリアルタイムデータベースを更新する

私がやっていること:

リアルタイムデータベース(Firebase)

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

このようなJSONへのエクスポート:

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

のJavaScriptファイル(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()がまったく動作しないようです。

どれ提案が非常に高く評価され

答えて

1

update呼び出しは非同期的に起こるので、現在returnupdate完了する前に発生します。

updatePromiseを返すので、以下を試してみてください。

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

こんにちは@Jeff、それが働きました。迅速かつ正確な答えをありがとう。^_ ^ –

関連する問題