如果我想检索/插入月度销售数字,我该如何定义我的架构?像这样?
sales: [{
Jan:Number,
Feb:Number
}]
答案 0 :(得分:0)
您不应该在mongodb架构中使用值作为字段名称,因此很难对其进行查询。您想要保存哪些数据,可以保存一年中每个月的日期,或者分别保存月份和年份字段。
以下是我认为你可以使用的两种模式。
sales:[
{
month_date: {type: Date},
amount: {type: Number}
}
]
sales:[
{
month: {type: String},
year: {type: Number},
amount: {type: Number}
}
]
使用这些架构,您可以轻松查询这些记录
答案 1 :(得分:0)
您可以简单地创建一个架构,如下所示
var monthlySale = new Schema({
sale: Number,
month: Number, //may be string
year: Number
});
var MonthlySale = mongoose.model('MonthlySale', monthlySale);
你可以插入
var sale = new MonthlySale({ sale: 5000, month: 7, year: 2016})
sale.save(function(err, saleObj) {
if(err)
console.log('Unable to create sale')
else
console.log('New sale created')
});
你可能会发现如下
MonthlySale.findOne({month: 7, year: 2016}, function(err, sale) {
if(err)
console.log('Unable to fetch sale')
else
console.log('Sale : ', sale)
});
答案 2 :(得分:0)
您可以使用joi验证,这是一个示例...(注意:我通过导出它使其动态化,以便您可以在任何地方使用...)
因此,您必须先导入joi模块。见下文......
var joi = require('joi');
现在下面是字符串,数字等的验证器......
var string = joi.string().min(2).max(50); //you can also set max,min..
var bool = joi.boolean();
var number = joi.number().min(1).max(999999999).required();
var object = function object(obj) {
return joi.object().keys(obj);
}
var array = function array(ary) {
return joi.array().items(ary).min(1);
}
现在只需将这些全部导出......
module.exports = {
string: string,
bool: bool,
number: number,
object: object,
array: array
}
现在您可以导入保存它的文件,并可以使用这些验证器。
var schema = {
firstname: string.label('user firstname'),
lastname: string.label('user lastname'),
gender: bool.label('user gender'),
age: number.label('user age')
};