Отправка массива, который не в форме через мангуста - PullRequest
0 голосов
/ 31 декабря 2018

Я создаю приложение для внутренней сети с помощью 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("/");
       }
   }) 
});

1 Ответ

0 голосов
/ 01 января 2019

у вас есть метод Post.create ()?Если это так, опубликуйте его, чтобы я мог получить четкое представление о том, что вы делаете

пока кажется, что у вас возникли проблемы с отправкой данных на серверный пост-запрос, который вы имеете на узле. Таким образом, вы можете использоватьJquery и сделать asnyc-запрос к серверу, используя AJAX, вы можете использовать встроенный метод 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");
   }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...