通过API

时间:2017-05-12 19:48:04

标签: node.js api express post mongoose

我目前遇到的问题是使用Mongoose通过API发布我的数据数据。

目前,此数据显示在我的控制台中:

taskName: 'name',
  word: 'word2',
  wordDesc: 'description',
  tag: [ { text: 'word0' }, { text: 'word1' }, { text: 'word2' } ] }

我需要将标签数组推送到具有单独值的数据库,因此我可以将每个单词发布/定位到HTML中供以后使用。

目前我将整个数组添加到我的数据库集合中,它在我的数据库中提供了这些数据:

"word": "[object Object],[object Object],[object Object],[object Object]"

如何遍历数组中的每个项目并将其单独插入数据库?

API代码

 router.post('/task', function (req,res) {
            var task = req.body.tag;
            var taskDesc = req.body.wordDesc;
            var taskName = req.body.taskName;
            console.log(req.body);
            var newTask = new Task ({
                tags:[{word:task}],
                wordDesc: taskDesc,
                taskName: taskName 
            });


            newTask.save(function(err){
                if (err) {
                    return res.send(err);
                }
                return res.json(newTask);
            });
        });

MongoDB架构

var taskSchema = mongoose.Schema({
    tags: [{
         word        : {type: String, default: ""}
    }],

    wordDesc    : {type: String, default: ""},
    taskName    : {type: String, default: ""}
});

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你可以这样做:

...
  var newTask = new Task();
  newTask.wordDesc = taskDesc;
  newTask.taskName = taskName;

  wordTasks.forEach(word=>{
     newTask.tags.push(word);
  });

  newTask.save(function(err){
  ...

答案 1 :(得分:0)

我们最终从您的示例中汲取了一些灵感,代码最终看起来像这样,并按照我们想要的方式运行:

var word = req.body.tag;
        var taskDesc = req.body.wordDesc;
        var taskName = req.body.taskName;
        console.log(req.body);

        var newTask = new Task();          
             newTask.taskName = taskName;
             newTask.wordDesc = taskDesc;
          for (var i = 0; i < word.length; i++) {
             console.log(word[i].text);
             newTask.tags.push(word[i]);
                }