[英]How to save a large array to MongoDB using mongoose in Node.js
[英]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.