繁体   English   中英

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

[英]How to Save the data in Array of object in MongoDb using Node.js

这是我的模型,我正在尝试将数据保存在模型的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

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

如果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);
   }
});

从邮递员发送数据的示例

{
    "name":"abc",
     "tools":[
        {
            "jira":{
                "url":"www.abc.com",
                "userName":"abvc",
                "password":"123"
            },
            "test1":{
                "token":"your token",
                "uri":"www.anything.com"
            }
        }         
            ]
}

然后通过此代码保存数据

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM