我一直试图使用Firebase Functions编写一个简单的方法,但是我不熟悉JS。
下面是我的实时数据库的结构
-景点
--- is_hidden:假
---喜欢
------ 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)
有人可以帮我编写此功能吗?谢谢!