Обновите базу данных в реальном времени в Firebase
Я создаю API, который может обновлять значение из базы данных в реальном времени (Firebase). Использование 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';
});
Когда я запускаю API в Почтальоне:
Что случилось: API ответил "Обновление успешно", но база данных не получила никакого обновления. Кажется, что код database.update() не работает вообще.
Любое предложение очень ценится
1 ответ
Решение
update
вызов происходит асинхронно, поэтому в настоящее время return
происходит раньше update
завершается.
update
возвращает обещание, поэтому попробуйте следующее:
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);
});