【问题标题】:Using form element as variable in Firebase .child()在 Firebase .child() 中使用表单元素作为变量
【发布时间】:2015-03-26 04:42:49
【问题描述】:

我想使用表单元素的输入值来添加对我的 firebase 数据的子引用。但是,firebase .child() 需要一个字符串,我尝试插入一个变量(其值是一个字符串),但它不起作用。我该如何绕过这个?

例如这里是一个输入和提交按钮的非常简单的代码。提交时,我想获取用户名并在此结构中添加对我的数据库(在 /users ref 下)的子引用:

{username:{userid: "someID"}}

<html>
<body>
<form>
    <input id="testusername" type="text">
    <button type="submit" id="testsubmit" value="submit"></button>
</form>
<p>test file for .child()/p>
    <script type="text/javascript">

    $('#testsubmit').on('click',function(){
        var elusername = document.getElementById('testusername');
        var username = elusername.value;
        alert('username is' + username)
        var url = "https://thriftit.firebaseio.com/users";
        var firebaseRef = new Firebase(url);
        firebaseRef.child(username).push({
          userid: "someID"});
    });
   </script>
</body>
</html>

【问题讨论】:

    标签: javascript firebase


    【解决方案1】:

    有几件事。

    1. 你在javascript可以运行之前提交表单,你需要防止页面在点击时提交页面,所以去掉type="submit"

    2. 我不会在用户名上做一个孩子,原因是如果另一个具有相同用户名的用户添加了一些数据,那么它将被添加到相同的用户名下,所以你会在相同的用户名。

    你想要类似这样的东西:

     $('#testsubmit').on('click',function(){
        var elusername = document.getElementById('testusername'),
            username = elusername.value,
            url = "https://thriftit.firebaseio.com/users",
            firebaseRef = new Firebase(url);
            userRef = firebaseRef.push({
                username: username,
                userid: "someID"
            });
        console.log(userRef.name()); // this is the uid for the newly generated user        
    });
    

    【讨论】:

    • 弗兰克,感谢您的回复。我在#2中看到了您的观点,并且我同意 push() 会更好。我不确定你在#1 中的意思。我的代码如何在js运行前提交表单?我不希望该功能仅在按下提交按钮后执行吗?
    猜你喜欢
    • 2015-09-14
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多