Как я могу получить снимок данных, а затем обновить базу данных в облачных функциях Firebase HTTP запрос - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь взять образец данных из базы данных Firebase в реальном времени в HTTPS-запросе облачных функций, а затем добавить значение из запроса в значение моментального снимка и снова установить его в базе данных.

Вот мой код.

exports.addCredits = functions.https.onRequest((req, res)=>{
    console.log(req.query.UserID);
    var credits = req.query.amount
    var userId = req.query.UserID

    return admin.database().ref('/Users/' + userId).once('value').then(function(snapshot) {
        var userPoints = snapshot.val().Credit
        const databaseRef = admin.database().ref("Users").child(userId+"/Credit")
        res.send("Your Credits  "+ credits + " And User ID " + userId + " user points" + userPoints);
        var total = credits + userPoints
        databaseRef.set(total);
    })
})

Вот ошибка в терминале при развертывании кода.

18:70  warning  Unexpected function expression              prefer-arrow-callback
18:70  error    Each then() should return a value or throw  promise/always-return

Как я могу получить снимок моей базы данных и снова записать его?

1 Ответ

0 голосов
/ 02 января 2019

Эти сообщения об ошибках очень полезны, Ганеш, прочитайте их оба ...

18:70 warning Unexpected function expression prefer-arrow-callback

- ПРЕДУПРЕЖДЕНИЕ, говорящее о том, что вы должны использовать синтаксис функции стрелки ES6 вместо староговылепленный синтаксис со словом " function ":

return admin.database().ref('/Users/' + userId).once('value').then( snapshot => {

А затем фактическая ОШИБКА ...

18:70 error Each then() should return a value or throw promise/always-return

говорит вам, что каждый раз, когда вы используете .then(), внутренняя функция должна что-то возвращать.

return admin.database().ref('/Users/' + userId).once('value').then( snapshot => {
        var userPoints = snapshot.val().Credit
        const databaseRef = admin.database().ref("Users").child(userId+"/Credit")
        res.send("Your Credits  "+ credits + " And User ID " + userId + " user points" + userPoints);
        var total = credits + userPoints
        databaseRef.set(total);
        // You are inside of a .then() block here...
        // you HAVE return SOMETHING...
        // if you want, you could do:   return databaseRef.set(total);
        // or even just:   return true;
    })
...