在node.js中自定义验证消息
我是Node.js新手,在Node.js中自定义验证消息时遇到问题。我使用CRUD操作创建了一个简单的应用程序,其中包含复合js。在我的应用程序中有一个名为“id”的字段。“id”字段仅接受整数值。然后,我使用model/user.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
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
也执行为空检查,您不能覆盖检查生成的消息。