如何验证猫鼬数组中的整数

编程入门 行业动态 更新时间:2024-10-11 07:28:35

如何验证猫鼬数组中的<a href=https://www.elefans.com/category/jswz/34/1771264.html style=整数"/>

如何验证猫鼬数组中的整数

我制作了一个具有属性Loc的模式places,该属性是一个字符串数组。我想验证数组的元素。元素不能为空字符串或仅包含空格的字符串。我只想要非空非空白字符串。我正在使用比赛验证器。

所以我尝试了以下代码:

const mongoose = require('mongoose');

const arrSchema = new mongoose.Schema({
    value: { type: String, match: /^(?!\s*$).+/ }
})

const Loc = mongoose.model('Loc', {
    num: Number,
    places: [arrSchema]
});

(async ()=>{
    try{
        await mongoose.connect.....

        let data1 = new Loc({
            num: 1,
            places: ['a','b','c']
        });

        // this one should work
        console.log('trying save one');
        await data1.save();
        console.log("data1 saved");

        let data2 = new Loc({
            num: 2,
            places: [' ','p','q']
        });

        // this one should not
        console.log('trying save two');
        await data2.save();
        console.log('data2 saved');

        process.exit(0);

    } catch(err){
        console.log("Error");
        process.exit(1);
    }
})();

但是代码试图保存data1时会引发验证错误。有人可以告诉我我要去哪里了吗?

回答如下:

有两种方法可以做到这一点

[First:您已经创建了将在places Array中使用object {“ value”:“ string”}]的架构,并且在代码中,您直接在为什么它不起作用。

下面是更新的代码

const mongoose = require('mongoose');

const arrSchema = new mongoose.Schema({
    value: { type: String, match: /^(?!\s*$).+/ }
})

const Loc = mongoose.model('Loc', {
    num: Number,
    places: [arrSchema]
});

(async ()=>{
    try{
        await mongoose.connect.....

        let data1 = new Loc({
            num: 1,
            places: [{"value": "a"},{"value": "b"},{"value": "c"}]
        });

        // this one should work
        console.log('trying save one');
        await data1.save();
        console.log("data1 saved");

        let data2 = new Loc({
            num: 2,
            places: [{"value": " "},{"value": "p"},{"value": "q"}]
        });

        // this one should not
        console.log('trying save two');
        await data2.save();
        console.log('data2 saved');

        process.exit(0);

    } catch(err){
        console.log("Error");
        process.exit(1);
    }
})();

[Second:如果您不希望在[[places Array中使用对象,则应更新Loc Schema并放置一个自定义验证器,如下面的代码所示]]const mongoose = require('mongoose'); var LocSchema = new mongoose.Schema({ num: Number, places: { type: [String], validate: { validator: function(value) { for (var i = 0; i < value.length; i++) { if (!(/^(?!\s*$).+/.test(value[i]))) { return false; } } return true; }, message: props => `Location should not be empty` } } }); const Loc = mongoose.model('Loc', LocSchema); (async ()=>{ try{ await mongoose.connect..... let data1 = new Loc({ num: 1, places: ['a','b','c'] }); // this one should work console.log('trying save one'); await data1.save(); console.log("data1 saved"); let data2 = new Loc({ num: 2, places: [' ','p','q'] }); // this one should not console.log('trying save two'); await data2.save(); console.log('data2 saved'); process.exit(0); } catch(err){ console.log("Error"); process.exit(1); } })();

更多推荐

如何验证猫鼬数组中的整数

本文发布于:2024-05-07 15:56:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1757024.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:整数   组中   猫鼬数

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!