So wird eine Firebase-POST-Anforderung ausgelöst, wenn in Node.js / EJS @ auf eine Schaltfläche geklickt wi
BEARBEITEN
Es gab eigentlich noch einige Probleme. Das eigentliche Problem waren die Firebase-Sicherheitsregeln. Alles wurde hier gelöst:Wie füge ich eine Node.js-Variable in mein <script> </ script> ein?
FRAGE
Wie wird eine Firebase-POST-Anforderung ausgelöst, wenn auf "UpvoteButton" oder "DownvoteButton" geklickt wird?
WAS ICH VERSUCHT HABE:
UPDATE 4:
ch glaube, ich mache Fortschritte. Hier finden Sie den aktualisierten Code. Jetzt bekomme ich den Fehler:
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 %>