如何在 Node.js / EJS 中单击按钮时触发 Firebase POST 请求

2023-12-07

EDIT:

实际上仍然存在一些问题。真正的问题实际上是 Firebase 安全规则。一切都在这里解决了:如何将 Node.js 变量放入我的 中?

问题:

单击“Downvote Button”的“Upvote Button”时如何触发Firebase POST请求?


我尝试过的:

更新4:

我想我正在进步。在下面找到更新的代码。现在我收到错误:

SyntaxError: Unexpected token ; in ... while compiling ejs

CODE:

<% include ../partials/header %>

<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>

<% 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/section/"+id+"/upvotes"); %>
    <% var downvotesRef = firebase.database().ref("posts/section/"+id+"/downvotes"); %>

    $('.UpvoteButton').click(function () {
        <% if(authdata == null) { %>
            window.location.href = "/users/login";
        <% } else { %>

            var $this = $(this);
            var $other = $('.DownvoteButton');

            if ($this.hasClass("on")) {
                $this.removeClass("on");

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

            } else if (!$this.hasClass('on') && $other.hasClass("on")) {
                $this.addClass('on');
                $other.removeClass("on");

                <%  upvotesRef.transaction(function (upvotes) { %>
                <%   if (!upvotes) { %>
                <%     upvotes = 0; %>
                <%   } %>
                <%   upvotes = upvotes + 1; %>
                <%   return upvotes; %>
                <% }); %>

                <% downvotesRef.transaction(function (downvotes) { %>
                <%  if (!upvotes) { %>
                <%    downvotes = 0; %>
                <%  } %>
                <%  downvotes = downvotes - 1; %>
                <%  return downvotes; %>
                <% }); %>

            } else {
                $this.addClass('on');

                <% upvotesRef.transaction(function (upvotes) { %>
                <%  if (!upvotes) { %>
                <%    upvotes = 0; %>
                <%  } %>
                <%  upvotes = upvotes + 1; %>
                <%  return upvotes; %>
                <% }); %>
            } 
        <% } %>
    });

    $('.DownvoteButton').click(function () {
        <% if(authdata == null) { %>
            window.location.href = "/users/login";
        <% } else { %>
            var $this = $(this);
            var $other = $('.UpvoteButton');
            if ($this.hasClass("on")) {
                $this.removeClass("on");
            } else if (!$this.hasClass('on') && $other.hasClass("on")) {
                $this.addClass('on');
                $other.removeClass("on");
            } else {
                $this.addClass('on');
            }
        <% } %>
    });

</script>

<% include ../partials/footer %>

您必须通过调用来初始化 firebasefirebase.initializeApp(...)

就像 firebase 指南告诉我们的那样:

`

// TODO: Replace with your project's customized code snippet
  <script src="https://www.gstatic.com/firebasejs/3.4.0/firebase.js"></script>
  <script>
    // Initialize Firebase
    var config = {
      apiKey: '<your-api-key>',
      authDomain: '<your-auth-domain>',
      databaseURL: '<your-database-url>',
      storageBucket: '<your-storage-bucket>'
    };
    firebase.initializeApp(config);
  </script>`

https://firebase.google.com/docs/web/setup

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Node.js / EJS 中单击按钮时触发 Firebase POST 请求 的相关文章

随机推荐

  • Java:空间对编译有影响吗?

    我正在制作一个程序 有点像 Piglatin 其中我无意中错过了语句中的一个变量 String a R a 其实应该是String a R text a 编译器产生了一个错误 但是 当我做到了 String a R a 程序编译完成 我想知
  • 需要在导航抽屉内显示可扩展列表视图

    I am an Android Application Developer I have started working on React Native I am unable to find a way to show expandabl
  • ASP.NET MVC 5 身份 userManager.IsInRole

    以下代码不起作用 我无法解释为什么 我的用户管理器造成了很大的困扰 因为它创建用户和角色很好 但是当我运行此代码时 userManager IsInRole 总是返回 false 所以第二个当我运行我的种子时 我遇到了错误 因为它试图创建记
  • Zend Framework 2 库路径

    当我试图尝试 ZF2 时 我偶然发现了我的第一个问题 在模块上说我想使用 Shanty Mongo 连接到 MongoDb 的外部库 因此 我复制了库上的整个 Shanty 目录并创建了一个新的 Model 类 namespace Dumm
  • AsyncTask不能在android线程中工作

    我使用 AsyncTask 来更改 TextView 的文本 如下所示 private class LongOperation extends AsyncTask
  • Twisted:重新连接ClientFactory连接到不同的服务器

    我有一个扭曲的 ReconnectingClientFactory 我可以通过该工厂成功连接到给定的 ip 和端口 而且效果很好 reactor connectTCP ip 端口 myHandsomeReconnectingClientFa
  • 如何找到与我的代码兼容的所有以前版本的 python

    我在 python 2 7 3 中创建了一个中型项目 包含大约 100 个模块 我希望找出我的代码与哪些以前版本的 python 例如 2 6 x 2 7 x 兼容 在公共领域发布我的项目之前 找到它的最简单方法是什么 我知道的解决方案 安
  • 使用索引作为键初始化对象数组[重复]

    这个问题在这里已经有答案了 我试图找出如何初始化一个对象数组 其中每个对象都以索引 i 作为其键 以 0 作为其值 下面的代码没有按预期工作 但我不明白为什么 我还是 Javascript 的初学者 在其他地方找不到答案 var n 10
  • 带有 Dagger Hilt 的 Android 动态功能模块

    我已经构建了一个动态功能模块示例 其中包含基于格子应用程序的片段 子组件和依赖组件 如果您想查看here是链接 现在 我正在尝试使用将其转换为 Dagger Hilt安卓官方文档 在核心模块中 即库模块 应用程序模块和动态功能模块依赖于 S
  • Kotlin 无法在 Android Studio 上运行

    所有 kotlin 文件都无法在我的 Android Studio 上显示 即使直接将java文件转换为koltin 也可以对其进行编辑 但它不会出现在项目文件树上 IDE 还表明它是反编译的 class 文件 我无法创建 Kotlin 文
  • 如何过滤除特定白名单之外的所有 HTML 标签?

    这是针对 NET 的 设置了 IgnoreCase 但未设置 MultiLine 通常我在正则表达式方面表现不错 也许我的咖啡因不足 用户可以输入 HTML 编码的实体 u i b h3 h4 br a img 允许自动关闭 和 无论有或没
  • 无法使用点布局(graphviz 作为库)

    我使用 graphviz v2 28 0 作为 C 应用程序中的库 并且我想使用点布局渲染图形 一切正常 直到我打电话给gvLayout context graph 点 输出以下错误的函数 Error Layout type dot not
  • Pygame 三角函数:跟随斜边?

    我的方法里有一个方法Enemy类称为huntPlayer 它需要一个玩家对象p 这里是 def huntPlayer self p if self dist2p lt 200 self hunting True if p x gt self
  • 将“排名”列添加到数据框中

    我有一个数据框 其中包含不同年份的不同项目的数量 df lt data frame item rep c a b c 3 year rep c 2010 2011 2012 each 3 count c 1 4 6 3 8 3 5 7 9
  • 使用递归二分算法检查字符是否在字符串中

    我目前正在 edx 上学习编程课程 我的说明如下 使用二分搜索的思想 编写一个递归算法 检查字符串中是否包含字符 只要字符串按字母顺序排列即可 我的代码 python 2 7 在这里 def isitIn char aStr m aStr
  • 从其他程序集实例化 ResourceDictionary xaml

    我在包含颜色和画笔的 WPF 类库中定义了一个资源字典 称为 Brush Resources xaml
  • 事务标记为仅回滚:如何查找原因

    我在 Transactional 方法中提交事务时遇到问题 methodA methodB Transactional methodB em persist em flush log OK 当我从 method 调用 method 时 该方
  • POST 请求上的 GAE Soft 私有内存限制错误

    我正在开发一个使用 Google 应用程序引擎付费服务的应用程序 在应用程序中 我正在解析一个大型 xml 文件并尝试将数据提取到数据存储区 但是在执行此任务时 GAE 向我抛出如下错误 我还尝试通过将前端实例类从 F1 增加到 F2 来更
  • 使用 VBA 从 Excel 2010 查找并替换 Powerpoint 2010 中的文本

    我成功地在 powerpoint odule 中使用了这段代码 但是当我将其移动到我的 excel 模块中时 它给我带来了几个问题 我在 Excel 的第 1 页上嵌入了 Powerpoint 应用程序 目标是从 Excel 生成 Powe
  • 如何在 Node.js / EJS 中单击按钮时触发 Firebase POST 请求

    EDIT 实际上仍然存在一些问题 真正的问题实际上是 Firebase 安全规则 一切都在这里解决了 如何将 Node js 变量放入我的 中 问题 单击 Downvote Button 的 Upvote Button 时如何触发Fireb