Mongoose: встроенные проверки дополнительных свойств SchemaType, например, min, max, minlength, maxlength и т. Д. - PullRequest
0 голосов
/ 18 февраля 2019

Я новичок в mongoose (MongoDB) и Nodejs, я создаю службы RestFul для операций CRUD, однако моя проблема заключается в том, что для выражения Schema дополнительные свойства SchemaType не рассматриваются во встроенной проверке mongoose, где какон рассматривает только обязательное имущество.Ниже приведена моя модель для справки:

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

Итак, в приведенной выше модели есть такие свойства, как min, max для типа данных Number и minlength и maxLength для типа данных String, которые вообще не рассматриваются дляпроверка выполняется перед сохранением в MongoDB.

Мне не хватает какой-либо конфигурации в этом?я просмотрел документацию mongoose, а также множество постов 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');
    })
};

Пожалуйста, помогите мне, если я что-то упустил, но это нужно включить в него.Спасибо.

...