在Firebase中更新实时数据库

时间:2017-10-24 18:52:31

标签: javascript node.js firebase firebase-realtime-database claudiajs

我正在创建一个可以从实时数据库(Firebase)更新价值的API。使用ClaudiaJS创建API。基本上,API将按年度更新班级学生人数。

我做了什么:

实时数据库(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';

});

当我在Postman中运行api时:

  

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

发生了什么:API已回复'更新成功',但数据库没有获得任何更新。似乎代码 database.update()根本不起作用。

任何建议都非常感谢

1 个答案:

答案 0 :(得分:2)

U调用是异步发生的,所以目前updatereturn完成之前发生。

update返回Promise,请尝试以下操作:

update