我是 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
阻止你的承诺。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)