具有 Mongo 架构和 i18n 的多语言验证消息

Multilingual validation message with Mongo Schema and i18n

我是 Node.js/Mongo 的新手,我想知道如何使用 i18n 进行验证。到目前为止,这就是我所拥有的

架构

const UserSchema = new Schema({
    language: {
        type: String,
        enum: ['fr', 'en']
    },
    email: {
        type: String,
        default: ''
    }
});

验证

i18n.configure({
    locales:['en', 'fr'],
    directory:'locales',
    defaultLocale: this.language,
    cookie: 'locale'
});

UserSchema.path('email').validate(function (email) {
    return email.length;
}, i18n.__('Email_is_required'));

我之前添加了i18n的配置,所以我可以使用它,但我知道这不是正确的做法。我尝试使用 this.language 但默认情况下它始终是英语。

我想使用表单中发送的语言配置 i18n。有没有办法在模型中做到这一点?谢谢!

所以我找到了一个解决方法,这里是我目前的解决方案。我是直接用字段里的id

const UserSchema = new Schema({
    email: {
        type: String,
        unique: 'Unique_email', // id error in en.json 
        trim: true,
        default: '',
        required: [true, 'Email_required']
    }
});

在我看来,使用哈巴狗是我对每个错误所做的处理

ul
    each error in errors
        li!=  __(error) // the error return will be the key for this language