Я новичок в JavaScript. Это моя первая функция в javascript для развертывания функции на базе firebase.
Получил эту ошибку:
- [eslint] Unexpected function expression. (prefer-arrow-callback)
- [eslint] Expected catch() or return (promise/catch-or-return)
Что не так с этой функцией?
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.grantSignupReward = functions.database.ref('/users/{uid}/last_signin_at')
.onCreate(event => {
var uid = event.params.uid;
admin.database().ref('users/${uid}/referred_by')
.once('value').then(function(data) {
var referred_by_somebody = data.val();
if (referred_by_somebody) {
var moneyRef = admin.database()
.ref('/users/${uid}/inventory/pieces_of_eight');
moneyRef.transaction(function(current_value) {
return (current_value || 0) + 50;
});
}
});
});
Первая ошибка предполагает использование функции стрелки в качестве обратного вызова. Поэтому вам нужно заменить обычные функции, (function() {... })
, со стрелочными функциями, (() => {... })
.
Вторая ошибка предполагает, что вам либо нужно уловить отказ обещаний, либо вернуть само обещание. Я не слишком уверен в вашем коде, но я считаю, что этот метод:
admin.database().ref('users/${uid}/referred_by').once('value')
возвращает обещание. Поэтому его нужно вернуть так:
return admin.database().ref('users/${uid}/referred_by').once('value')
или обрабатывать ошибку следующим образом:
admin.database().ref('users/${uid}/referred_by').once('value')
// ... your code here
.catch(error => { ... });
Поскольку @Bergi отметил в комментариях, что возвращение обещания здесь не предпочтительнее, вы можете просто добавить блок catch
в свое обещание.
return
обещания здесь не подходит.