如何通过文本输入框设置Firebase子节点名称?
解决方法
你的问题出在没有正确获取输入框的值并拼接到Firebase路径中——之前的写法把选择器字符串('#name')直接当成了子节点名称,而不是输入框的实际内容。
正确的写法应该先获取输入框的值,再将其拼接到路径里:
// 先获取输入框的实际值 const userName = $('#name').val(); // 用获取到的值作为子节点名称拼接路径 contactsRef.child(`users/${auth.uid}/${userName}`) .set({ a1: userName });
也可以直接在child()方法里完成拼接:
contactsRef.child("users/" + auth.uid + "/" + $('#name').val()) .set({ a1: $('#name').val() });
额外注意事项
- 建议先判断输入值是否为空,避免创建无效的空名称子节点:
const userName = $('#name').val().trim(); if (userName) { contactsRef.child(`users/${auth.uid}/${userName}`) .set({ a1: userName }); } else { alert("请输入有效的用户名"); } - Firebase节点名称不允许包含
.、#、$、[、]、/这类特殊字符,如果业务需要支持这类输入,要先对值做转义处理。
内容的提问来源于stack exchange,提问作者King Moaz
相关产品推荐
相关产品推荐

