【发布时间】:2018-07-02 19:32:50
【问题描述】:
我一直在尝试使用Firebase Functions写一个简单的方法,但是我对JS不熟悉。
下面是我的实时数据库的结构
-斑点
---is_hidden: false
---喜欢
-----like_id_1: 真
---不喜欢
-----dislike_id_1: 是的
我正在尝试编写一个简单的方法来执行以下操作:每当将条目添加到不喜欢时,计算喜欢和不喜欢的次数。
如果不喜欢的数量大于(喜欢+5)的数量, 将is_hidden的值改为true
这是我解决问题的尝试
exports.checkHiddenStatus = functions.database.ref('/spots/{spotid}').onWrite(
(change, context) => {
const collectionRef = change.after.ref;
const isHiddenRef = collectionRef.child('is_hidden');
const likesRef = collectionRef.child('likes');
const dislikesRef = collectionRef.child('dislikes');
if(isHiddenRef.before.val()) return;
let likeCount = likesRef.numChildren();
let dislikeCount = dislikesRef.numChildren();
let isHidden = false;
if( dislikeCount >= (likeCount + 5))
isHidden = true;
if(!isHidden) return;
// Return the promise from countRef.transaction() so our function
// waits for this async event to complete before it exits.
return isHiddenRef.transaction((current) => {
return isHidden;
}).then(() => {
return console.log('Counter updated.');
});
});
很遗憾,因为我没有使用 JS 的经验,所以我总是遇到我不理解的错误消息。最近的存在
TypeError:无法读取未定义的属性“val” 在exports.checkHiddenStatus.functions.database.ref.onWrite (/user_code/index.js:28:28)
有人可以帮我写这个函数吗?谢谢!
【问题讨论】:
-
仅供参考,错误消息是说问题出在 index.js 的第 28 行。
标签: javascript firebase firebase-realtime-database google-cloud-functions