Javascript 如何将Node.js变量放入我的<;脚本></脚本>;?

Javascript 如何将Node.js变量放入我的<;脚本></脚本>;?,javascript,jquery,node.js,firebase,Javascript,Jquery,Node.js,Firebase,问题: 我在脚本标记中有一些Firebase代码,但它不会执行。我应该如何在其中写入变量 通常,当我单击该按钮时,应该触发一个请求来更新Firebase中的upvote值,但什么也没有发生 代码没有执行,但我没有得到任何错误 代码: file.ejs <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https:

问题:

我在脚本标记中有一些Firebase代码,但它不会执行。我应该如何在其中写入变量

通常,当我单击该按钮时,应该触发一个请求来更新Firebase中的upvote值,但什么也没有发生

代码没有执行,但我没有得到任何错误


代码:

file.ejs

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://www.gstatic.com/firebasejs/3.5.0/firebase.js"></script>

<script>
  // Initialize Firebase
  // TODO: Replace with your project's customized code snippet
  var config = {
    apiKey: "info",
    authDomain: "info",
    databaseURL: "info",
    storageBucket: "info",
    messagingSenderId: "info"
  };
  firebase.initializeApp(config);
</script>

<div class ="containerMarginsDetails">

    <h1 class= "detailsTitle"><%=post.title %></h1>
    <div class="row">
        <img class = "postImg"  src="/images/uploads/<%= post.image %>">
        <span class="UpvoteButton"> </span><span class="DownvoteButton"> </span> <span class="HP"><%= post.upvotes - post.downvotes%> HP</span>
    </div>

</div>

<script>

        var upvotesRef =  firebase.database().ref("posts/fun/<%=id%>/upvotes");
        var downvotesRef = firebase.database().ref("posts/fun/<%=id%>/downvotes");

        $('.UpvoteButton').click(function () {

                      upvotesRef.transaction(function (upvotes) {  
                       if (!upvotes) { 
                          upvotes = 0; 
                       } 
                         upvotes = upvotes - 1; 
                         return upvotes; 
                      }); 
       });

</script>

注意:Firebase也在我的app.js文件中进行了初始化

编辑:

如果我尝试此版本的代码,firebase请求将在每次重新加载页面时触发,而不是在单击时触发。我如何确保它仅在单击时触发

<% var upvotesRef =  firebase.database().ref("posts/fun/"+id+"/upvotes");
var downvotesRef = firebase.database().ref("posts/fun/"+id+"/downvotes"); %>

$('.UpvoteButton').click(function () {
      <% upvotesRef.transaction(function (upvotes) {  
          if (!upvotes) { 
             upvotes = 0; 
          } 
             upvotes = upvotes + 1; 
             return upvotes; 
      }); %>
   });
编辑3:

在此之前,我还收到以下(非崩溃)错误消息:

主线程上的同步XMLHttpRequest不推荐使用,因为它会对最终用户的体验产生有害影响。如需更多帮助,请查看

编辑4:

如果我将规则更改为:

{
  "rules": {
    ".read": "true",
    ".write": "true"
  }
}
这个按钮很好用


但是,尽管我已通过身份验证,但为什么代码与前面的规则不兼容???

因为您使用的是模板语言,所以不需要
+
运算符:

var upvotesRef =  firebase.database().ref("posts/fun/<%=id%>/upvotes");
var-upvotesRef=firebase.database().ref(“posts/fun//upvots”);

由于您使用的是模板语言,因此不需要
+
运算符:

var upvotesRef =  firebase.database().ref("posts/fun/<%=id%>/upvotes");
var-upvotesRef=firebase.database().ref(“posts/fun//upvots”);
您可以尝试使用

遗憾的是,我不能评论(没有足够的代表),否则如果你检查按钮,我会问你是否看到id。

你可以尝试用



遗憾的是,我无法发表评论(没有足够的代表),否则如果您检查按钮,我会问您是否看到id。

我试过了。遗憾的是,它没有改变任何东西:/(这就是为什么我尝试了通常用于字符串连接的“+var+”符号)。令人困惑的是,我没有收到任何错误消息:(我建议查看模板语言生成的源代码,并确保它看起来有效。然后我会到处添加console.log语句,查看代码是什么,没有被调用。我查看了生成的源代码,一切正常。至于console.log,除非我这样写,否则它们不会打印任何内容:
顺便说一句:我更新了我的问题,在代码执行的地方尝试了一些东西,但是我无法仅在单击时执行它(Jquery是客户端,firebase func是服务器端)。您建议做什么?似乎只有
之间的代码被执行。我能够执行console.logs并发现错误>:)我用屏幕截图更新了我的问题。错误是什么意思?我尝试了。遗憾的是,它没有改变任何东西:/(这就是为什么我尝试了“+var+”)符号通常用于字符串连接)。令人困惑的是,我没有收到任何错误消息:(我建议查看模板语言生成的源代码,并确保它看起来有效。然后我会到处添加console.log语句,查看代码是什么,没有被调用。我查看了生成的源代码,一切正常。至于console.log,除非我这样写,否则它们不会打印任何内容:
顺便说一句:我更新了我的问题,在代码执行的地方尝试了一些东西,但是我无法仅在单击时执行它(Jquery是客户端,firebase func是服务器端)。您建议做什么?似乎只有
之间的代码被执行。我可以执行console.logs,发现错误>:)我用一个屏幕截图更新了我的问题。错误是什么意思?我尝试了你的符号,但我一定是做错了什么,因为我的终端没有打印出与id有关的任何内容。我还必须指出,我试图放在脚本标记之间的所有console.log语句都不会打印到我的终端。尽管如此,我可以通过书写打印id。它,但console.log打印在服务器端,对吗?如果将其写入脚本标记并在我的终端(服务器端)上打印id会怎么样当我写的时候:我尝试了你的符号,但我一定是做错了什么,因为我的终端没有打印任何关于id的内容。我还必须指出,我试图放在脚本标记之间的所有console.log语句都没有打印到我的终端。尽管如此,我可以通过写来打印id。它在那里。但是console.log打印在服务器sid上是吗?如果您将其写入脚本标记,并且当我写入时,id打印在我的终端(服务器端)上,该怎么办
var upvotesRef =  firebase.database().ref("posts/fun/<%=id%>/upvotes");