首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Firebase中更新实时数据库

在Firebase中更新实时数据库
EN

Stack Overflow用户
提问于 2017-10-24 18:52:31
回答 1查看 1.7K关注 0票数 0

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

我所做的:

实时数据库(Firebase)

代码语言:javascript
复制
class
 |__2015
 |    |__numberOfStudent: 50
 |__2016
      |__numberOfStudent: 60 

像这样导出到JSON:

代码语言:javascript
复制
{
  "class": {
    "2015": {
      "numberOfStudent": 50
    },
    "2016": {
      "numberOfStudent": 60
    }
  }
}

Javascript文件(ClaudiaJS):

代码语言:javascript
复制
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()根本不起作用。

任何建议都是非常感谢的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-24 19:53:24

update调用是异步进行的,因此当前return发生在update完成之前。

update返回一个承诺,因此尝试以下操作:

代码语言:javascript
复制
return database.update({ref : parseInt(number)})
    .then(() => {
        // Each then() should return a value or throw
        return 'Update successful';
    })
    .catch(error => {
        // handle the error however you like
        console.error(error);
    });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46918000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档