【问题标题】:Populate Object Array to Mongoose through API通过 API 将对象数组填充到 Mongoose
【发布时间】:2017-10-12 05:29:37
【问题描述】:

我目前在使用 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: ""}
});

【问题讨论】:

    标签: node.js api express post mongoose


    【解决方案1】:

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

    ...
      var newTask = new Task();
      newTask.wordDesc = taskDesc;
      newTask.taskName = taskName;
    
      wordTasks.forEach(word=>{
         newTask.tags.push(word);
      });
    
      newTask.save(function(err){
      ...
    

    【讨论】:

      【解决方案2】:

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

      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]);
                      }
      

      【讨论】:

        猜你喜欢
        • 2022-01-24
        • 2016-01-19
        • 1970-01-01
        • 2020-06-01
        • 2019-09-23
        • 2020-11-11
        • 2013-05-14
        • 2017-10-26
        • 2018-09-10
        相关资源
        最近更新 更多