MEAN-Stack使用猫鼬在MongoDB中保存数组
我是网络开发新手,我遇到了一个我无法解决的问题。我从MEAN开始,到目前为止,我遇到了以下问题。MEAN-Stack使用猫鼬在MongoDB中保存数组
我在我的角度js控制器中有一个滑块的数组结构。从这个数组结构中,我试图将一些值保存到我的数据库中。
角JS片断控制器
$scope.alerts = [
{ id: 1,
title: 'CustomerCount',
value: 1,
weight: 30,
options: {
showTicks: true,
hidePointerLabels: true,
hideLimitLabels: true,
stepsArray: [
{ value: 1, legend: '<10' },
{ value: 2, legend: '<50' },
{ value: 3, legend: '<250' },
{ value: 4, legend: '<500' },
{ value: 5, legend: '>500' }
]
}
},
{ id: 2,
title: 'CustomerSatisfaction',
value: 3,
weight: 40,
options: {
showTicks: true,
hidePointerLabels: true,
hideLimitLabels: true,
stepsArray: [
{ value: 1, legend: '<10' },
{ value: 2, legend: '<50' },
{ value: 3, legend: '<250' },
{ value: 4, legend: '<500' },
{ value: 5, legend: '>500' }
]
}
}
];
从上面的代码段中,我想保存标题,所述值和警告中
对于每个警报的重量这个目的,我在相同的角度js控制器下面的片段
// Create new Article object
var article = new Articles({
title: this.title,
alert: this.alert,
});
据我了解没有这个片段用在server.model.js文件中定义了以下模式创建我的数据库一个新的文章进入
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
/**
* Article Schema
*/
var ArticleSchema = new Schema({
created: {
type: Date,
default: Date.now
},
user: {
type: Schema.ObjectId,
ref: 'User'
},
alert: [{ value: Number, weight: Number, title: String }]
});
mongoose.model('Article', ArticleSchema);
但我现在的问题是,这不仅节省了空数组在MongoDB中。
下面介绍的解决方案导致解决方案。必须注意的是,
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
/**
* Article Schema
*/
var ArticleSchema = new Schema({
created: {
type: Date,
default: Date.now
},
user: {
type: Schema.ObjectId,
ref: 'User'
},
alerts: []
});
// Create new Article object
var article = new Articles({
title: this.title,
alerts: this.alerts,
});
交付通缉的解决方案!
您的架构改成这样,它应该工作:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
/**
* Article Schema
*/
var ArticleSchema = new Schema({
created: {
type: Date,
default: Date.now
},
user: {
type: Schema.ObjectId,
ref: 'User'
},
alert: []
});
mongoose.model('Article', ArticleSchema);
我设法只是在指定的模式[]
保存在MongoDB的数组,然后你可以在阵列中保存多个对象。
您需要在Article
模式上调用save
方法。只有这样,文章被保存
var article = new Articles({
title: this.title,
alert: this.alert,
});
article.save(function(err, doc){
if(!err){
// Article saved! "doc" is the reference
}else{
console.error('Error on saving the article');
}
});
由于codeGig声明是已在我的项目中提到的代码。我能够将数据保存到猫鼬,但不幸的是,警报数组是空的,没有填写我提到的值 – danielkr
如果您正在使用MEAN然后保存数据来自于服务器是处理上快速,MongoDB的(猫鼬)和的NodeJS。
我假设你正在使用哟
首先Meanjs你需要做一个其中由您的角度$ HTTP AJAX 路线称为路线: article.server.route.js
// Articles collection routes
app.route('/api/articles')
.post(articles.create);
控制器: article.server.controller.js
exports.create = function (req, res) {
var article = new Article(req.body);
article.user = req.user;
article.save(function (err) {
if (err) {
return res.status(400).send({
message: err
});
} else {
res.json(article);
}
});
};
我正在使用Mean js,并且我使用yo生成了该项目。但是我已经完成了您在我的项目中提到的由yeoman生成器生成的所有代码。我可以将数据写入猫鼬中,但猫鼬中的数据由一个空警报数组组成,而不是由上面定义的值填充。 – danielkr
你在模型上调用'save()'方法的位置,即'article.save()'? – chridam
我在我的文章article.server.controller.js文件,我没有在这里列出,但它看起来像下面提供的一个codeGig – danielkr