Я создаю приложение для внутренней сети с помощью node.js и использую body-parser и mongoose для отправки данных формы в мою базу данных.Конкретная форма делает пост на сайте, который работает как надо.Тем не менее, я хочу добавить функцию добавления тегов к сообщению, которую пользователь выбирает, щелкая тег, и теги innerHTML добавляются в массив с помощью Javascript.Меня интересует, как отправить этот массив через mongoose, чтобы сохранить его в базе данных, даже если массив не находится в данных формы.Как я могу решить, это наилучший из возможных способов?
Массив, через который я хочу отправить, - это "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("/");
}
})
});