![](/img/trans.png)
[英]What's the best way to track if a checkbox / button was clicked in MongoDB?
[英]Track clicks on a button and save it to mongoDB
我正在嘗試做一個簡單的“推薦”功能,用戶可以單擊位置頁面上的按鈕,它將place.recoms遞增1並將新值保存到db。 這是我到目前為止的內容:
放置模型:
var placeSchema = new mongoose.Schema({
name: String,
address: String,
image: String,
description: String,
createdAt: {type: Date, default: Date.now},
recoms: Number,
author: {
id: {
type: mongoose.Schema.Types.ObjectId,
ref: "User"
},
username: String
},
comments: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Comment"
}
]
});
推薦地方路線:
router.post('/places/:id', function(req, res) {
Place.findById(req.params.id, function(err, place){
if(err){
req.flash("error", "Something went wrong.");
res.redirect("back");
} else {
place.recoms++;
place.save();
res.redirect("/places/" + req.params.id);
}
});
});
在場所的顯示頁面上推薦Div:
<div id="recommend" class="float-right text-center">
<p id="recomCount">
<%=place.recoms%> people recomend this place.
</p>
<form action="/places/<%=place.id%>?_method=PUT" method="post">
<a href="/places/<%=place.id%>/recom" id="recomButton" class="btn btn-xs btn-success">Recommend this place</a>
</form>
</div>
這是呈現頁面的方式:
router.get("/places/:id", function(req, res){
// find place with provided ID
Place.findById(req.params.id).populate("comments").exec(function(err, foundPlace){
if(err || !foundPlace) {
req.flash("error", "Place not found.");
res.redirect("back");
} else {
// render show template with that place
res.render("places/show", {place: foundPlace});
}
});
});
目前,無論如何,place.recoms值均保持為0。
這不是答案,只是對代碼的注釋。
最后,將路線更改為:
router.put("/places/:id/recom", function(req, res){
Place.findById(req.params.id, function(err, place){
console.log(req.params.id);
if(err){
req.flash("error", "Something went wrong.");
res.redirect("back");
} else {
place.recoms++;
place.save();
res.redirect("/places/" + req.params.id);
}
});
});
並將表格發送至:
<form action="/places/<%=place.id%>/recom/?_method=PUT" method="post">
<button id="recomButton" class="btn btn-xs btn-success">Recommend this place</a>
</form>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.