我正在使用node.js创建一个Intranet应用程序,并使用body-parser和mongoose将表单数据发送到我的数据库。特定表格会在网站上发布应有的帖子。但是,我想添加该功能以将标签添加到帖子中,用户可以通过单击标签来选择该标签,然后将标签innerHTML通过Javascript添加到数组中。我想知道的是即使该数组不在表单数据中,如何通过猫鼬发送该数组以将其保存在数据库中。我该如何解决这是最好的方法?
我要发送的数组是“ tagsList”之一。
如果有什么我应该更清楚的地方,请通知我。
HTML:
<div class="ui red attached secondary segment clearfix">
<div class="item">
<form class ="ui form" action="/" method="POST">
<div class="field">
<textarea rows="1" name="post[body]" placeholder="Write a post"
required></textarea>
</div>
<div class="box">
<div class="column" id="tagsField">
<div class="box wrap">
<div class="inside"><a class="ui red tiny label"
onclick="changeTag(this)">Daily Shopping</a></div>
<div class="inside"><a class="ui blue tiny label"
onclick="changeTag(this)">Managers</a></div>
<div class="inside"><a class="ui orange tiny label"
onclick="changeTag(this)">Lund</a></div>
<div class="inside"><a class="ui black tiny label"
onclick="changeTag(this)">Malmör</a></div>
</div>
</div>
<div class="column" id="buttonField">
<button type="submit" class="ui positive button">Post</button>
</div>
</div>
</form>
</div>
</div>
JavaScript:
var tagsList = [];
function changeTag(i) {
$(i).toggleClass("tag");
var index = tagsList.indexOf(i.innerHTML);
if(index == -1){
tagsList.push(i.innerHTML);
}
else{
tagsList.splice(index, 1);
}
}
节点:
//SCHEMA CONFIG
var postSchema = new mongoose.Schema({
body: String,
tags: [
{
type: String
}
],
created: {type: Date, default: Date.now}
});
var Post = mongoose.model("Post", postSchema);
//ROUTES
app.get("/", function(req, res){
Post.find({}, function(err, allPosts){
if(err){
console.log(err);
}else {
res.render("index", {posts: allPosts});
}
});
});
app.post("/", function(req, res){
req.body.post.body = req.sanitize(req.body.post.body);
Post.create(req.body.post, function(err, newPost){
if(err){
console.log(err);
}else{
res.redirect("/");
}
})
});
答案 0 :(得分:0)
您有Post.create()方法吗?如果是这样,请发布它,以便我可以清楚地了解您在做什么
现在看来,您在如何将数据发送到节点..上的后端发布请求时遇到了麻烦。 因此,您可以使用Jquery并使用AJAX向服务器发出asnyc请求 您可以使用Jquery的内置方法
var data ={
// here you make your post request using a proper json annotation so that
// you can send the whole object to the backend without any fuss
};
$.ajax(()=>{
method:"post",
url:"your url end point",
data: data, // this is you object of data you want to send to the server
success:(data)=>{
console.log("post success...");
},
error:()=>{
console.log("500 error");
}
});