我是猫鼬(MongoDB)和Nodejs的新手,我正在为CRUD操作创建RestFul服务,但是我的问题是,对于Schema表达式,在内置的猫鼬验证中未考虑SchemaType的其他属性,其中它仅在考虑必需的属性。请在下面找到我的模型供您参考:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
let ProductSchema = new Schema({
name: {
type: String,
required: true,
minlength:2,
maxlength:10
},
price:{
type: Number,
required:true,
min:2,
max:100
},
})
//Export the model
module.exports = mongoose.model('Product', ProductSchema);
因此在上述模型中,存在诸如Number数据类型的min,max和String数据类型的minlength和maxLength之类的属性,这些属性在保存到MongoDB中之前根本没有考虑进行验证。
我是否缺少任何配置?我已经浏览过猫鼬的文档,也浏览了stackoverflow的很多帖子,但是我没有得到关于此的任何信息。
这也是我的控制器:
const Product = require('../models/product.model');
// Simple version, without validation or sanitation
exports.test = function (req,res) {
res.send('Greetings from the Test Controller!');
};
exports.product_create = function (req,res,next) {
let product = new Product(
{
name: req.body.name,
price: req.body.price
}
);
product.save(function (err) {
if(err){
return next(err);
}
res.send('Product created Successfully');
}
)
};
exports.product_details = function (req,res, next) {
Product.findById(req.params.id, function (err, product){
if(err) {
return next(err);
}
res.send(product);
})
};
exports.product_update = function (req, res, next) {
Product.findOneAndUpdate(req.params.id, {$set: req.body},opts, function (err, product){
if(err) return next(err);
res.send('Product Updated');
})
};
exports.product_delete = function (req,res,next) {
Product.findOneAndRemove(req.params.id, function (err) {
if(err) return next(err);
res.send('Deleted product');
})
};
如果我缺少某些东西,仍然需要将其整合进来,请指导我。谢谢。