菜鸟教程小白 发表于 2022-12-13 00:11:02

ios - FirebaseDatabase 网页 iOS/OSX


                                            <p><p>我正在为一个学校项目开发一个网站,其中包含一个您需要按下的按钮。按下时,该按钮从数据库中获取一个值,即 child 'aantal' 并加 1。完成后,它会将其重新上传回数据库。再往前一页,您可以看到该 child 的实时号码。问题是,这不适用于 iOS 9 或更低版本以及 OSX Yosemite 或更低版本。在 android 和 windows 上运行良好。</p>

<p>可重用的代码;</p>

<p>这只是一个按钮。如果按下按钮,它会在 int 上添加 1。这很奇怪,因为它在上面提到的操作系统上不起作用。</p>

<pre><code>&lt;script src=&#34;https://www.gstatic.com/firebasejs/3.6.9/firebase.js&#34;&gt;&lt;/script&gt;
&lt;script language=&#34;JavaScript&#34;&gt;
      // Initialize Firebase
      var config = {
            apiKey: //API KEY,
            authDomain: //FIRBASE DOMAIN,
            databaseURL: //DATABASE URL,
            storageBucket: //STORAGE BUCKET,
            messagingSenderId: //MESGSENDID
      };
      firebase.initializeApp(config);
      var number;
      var database = firebase.database().ref().child(&#39;aantal&#39;);
      function buy() {
            database.on(&#39;value&#39;, snap =&gt; number = snap.val());
            var count = parseInt(number, 10) + 1;
            database.set(count);
      }
    &lt;/script&gt;
</code></pre>

<p>此代码不起作用,初始化自己的 Firebase 项目进行测试。
出于安全原因,我删除了我的详细信息。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><strong>编辑</strong>
原来 Safari(9.1/iOS 9.3 及以下)不支持箭头功能。</p>

<p>将 <code>database.on('value', snap => number = snap.val());</code> 更改为 <code>database.on('value', function(snap) { number = snap.val()});</code> 修复了这个问题。</p>

<p>我的意思是,该代码不应该在任何地方工作。</p>

<pre><code>function buy() {
    database.on(&#39;value&#39;, snap =&gt; number = snap.val());
    var count = parseInt(number, 10) + 1;
    database.set(count);
}
</code></pre>

<p>Firebase 是异步的,您无需等待它从数据库中实际加载数字。</p>

<p>这应该可行。</p>

<pre><code>function buy() {
    database.on(&#39;value&#39;, snap =&gt; {
      number = snap.val();
      var count = parseInt(number, 10) + 1;
      database.set(count);
    });
}
</code></pre>

<p>我不知道这是否真的是您遇到的问题,或者您是否只是在示例中写了这个。此外,在增加值时,您应该使用事务。</p>

<pre><code>function buy() {
    database.transaction(function(value) {
      if (value) {
            value++;
      }
      return value;
    });
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - FirebaseDatabase 网页 iOS/OSX,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/42734217/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/42734217/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - FirebaseDatabase 网页 iOS/OSX