在node.js中自定义验证消息

在node.js中自定义验证消息,node.js,express,railway.js,compoundjs,Node.js,Express,Railway.js,Compoundjs,我是Node.js新手,在Node.js中自定义验证消息时遇到问题。我使用CRUD操作创建了一个简单的应用程序,其中包含复合js。在我的应用程序中有一个名为“id”的字段。“id”字段仅接受整数值。然后,我使用model/user.js中的以下代码验证该字段 module.exports = function (compound, User) { var num = /^\s*\d+\s*$/; User.validatesFormatOf('id', {with: num, message

我是Node.js新手,在Node.js中自定义验证消息时遇到问题。我使用CRUD操作创建了一个简单的应用程序,其中包含复合js。在我的应用程序中有一个名为“id”的字段。“id”字段仅接受整数值。然后,我使用model/user.js中的以下代码验证该字段

module.exports = function (compound, User) {
 var num = /^\s*\d+\s*$/;
 User.validatesFormatOf('id', {with: num, message:"is not a number"});
};
通过使用上面的代码,它工作得很好。但我还想检查字段是否为空。然后我稍微修改一下代码。修改后的代码如下所示:

module.exports = function (compound, User) {
     var num = /^\s*\d+\s*$/;
     User.validatesFormatOf('id', {with: num, message: {blank: "can't be blank", with: "is not a number"}});
    };
 module.exports = function (compound, User) {
     var num = /^\s*\d+\s*$/;
     User.validatesPresenceOf('id', {message: "can't be blank"});
     User.validatesFormatOf('id', {with: num, message:"is not a number"});
    };
如果字段为空,则验证消息将显示为“Id不能为空”。但是,当我在id字段中输入数字以外的值时,验证错误消息将是“id[object]”。我认为关键字with不受支持。这里是否有任何其他关键字,如“blank”或“min”,以便我可以获得验证消息,因为“Id不是一个数字”

我找到了解决方案,因此user.js的修改版本如下:

module.exports = function (compound, User) {
     var num = /^\s*\d+\s*$/;
     User.validatesFormatOf('id', {with: num, message: {blank: "can't be blank", with: "is not a number"}});
    };
 module.exports = function (compound, User) {
     var num = /^\s*\d+\s*$/;
     User.validatesPresenceOf('id', {message: "can't be blank"});
     User.validatesFormatOf('id', {with: num, message:"is not a number"});
    };

上述代码的问题在于,它同时显示两条验证消息,即默认消息和自定义空白消息同时显示。我的要求是一次只为一个字段显示一条验证消息。这可能吗?

它看起来像JugglingDB(CompoundJS使用的ORM)中的一个bug

考虑以下代码:

这实际上会产生3个错误:

invalid { id: [ 'can\'t be blank', 'is blank', 'is blank' ] }
如果添加另一个
User.validatesFormat
,它将生成4个错误。这看起来像是JugglingDB验证代码中的一个范围问题,我将发布一个bug报告


现在,也许您可以使用发生的第一个错误(
user.errors[0]
编辑:从外观上看,如果它能够工作,您也必须这样做,因为JugglingDB将运行所有验证测试,并为所有失败的测试生成一个错误。

它看起来像JugglingDB(CompoundJS使用的ORM)中的一个bug

考虑以下代码:

这实际上会产生3个错误:

invalid { id: [ 'can\'t be blank', 'is blank', 'is blank' ] }
如果添加另一个
User.validatesFormat
,它将生成4个错误。这看起来像是JugglingDB验证代码中的一个范围问题,我将发布一个bug报告

现在,也许您可以使用发生的第一个错误(
user.errors[0]
编辑:从外观上看,如果它能够工作,您也必须这样做,因为JugglingDB将运行所有验证测试,并为所有失败的测试生成错误。

。换句话说,
validateFormatof
也执行
为空检查,您不能覆盖检查生成的消息。。换句话说,
validateFormatof
也执行
为空检查,您不能覆盖检查生成的消息。