如何使用Node.js将数据保存在MongoDb中的对象数组中

时间:2016-11-07 06:42:03

标签: javascript arrays node.js mongodb mongoose

这是My Model,我正在尝试将数据保存在Model的Tools数组中。

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var toolSchema = new Schema({
    name: {type: String},
    tools: [{
        jira: {
            url: {type: String},
            userName: {type: String},
            passWord: {type: String},
            status: {type: Boolean, default: false}
        },
        test1: {
            token: {type: String},
            uri: {type: String}
        },
        test2: {
            uri: {type: String}
        },
        test3: {
            uri: {type: String}
        }
    }]

});

module.exports = mongoose.model('Tool', toolSchema);

以下是我保存数据的代码

var Tools = require("../models/tool");
    exports.create = function (req, res) {
        var toolArr = req.body.tools;
        console.log(toolArr);
        var apps = new Tools();
        toolArr.forEach(function (item, index) {
            if (item.jira) {
                console.log(item.jira.userName);
                apps.tools.jira.userName = item.jira.userName;
                apps.save(function (err, result) {
                    if (err) {
                        console.log('Error in saving the Devops: ' + err);
                        throw err;
                    }
                    else {
                        console.log(result);
                        res.send(result);
                    }

                });
            }

        })
    };

我无法在mongodb中保存数据我正在获取错误,任何人都可以帮助我。 我正在使用邮递员这样发送数据。

tools[0][jira][userName]:Developer

3 个答案:

答案 0 :(得分:0)

根据您的架构找到错误 - > apps.tools.jira.userName = ...tools是一个数组,但没有.jira。您可能想要apps.tools[index].jira.userName = ...。另外,我建议不要在apps.save()内运行.forEach(),因为这会对您的数据库进行多次写入,但我不知道您的确切用例。

答案 1 :(得分:0)

如果req.body.tools包含对象数组,例如架构格式

var apps = new Tools();
apps.tools = req.body.tools;
 apps.save(function(err,result){
   if (err) {
      console.log('Error in saving the Devops: ' + err);
      throw err;
   } else {
        res.send(result);
   }
});

答案 2 :(得分:0)

从邮递员发送数据的示例

var Tools = require("../models/tool");
var apps = new Tools();
var data=req.body /* assuming it as a post request and data is send in body */ 
apps(data).save(function(err,result){
if(err){
   throw err;
}else {
         res.send(result);
      }
});

然后按此代码保存您的数据

DecisionTreeClassifier