我在节点中使用express-validator来验证我的表单,一旦我返回了我的验证结果,他们通过一个对象传递了错误(这就是我所拥有的):
{ email:
{ param: 'email',
msg: 'Email address must be between 4-100 characters long, please try again.',
value: '' },
name:
{ param: 'name',
msg: 'Name must be between 3-20 characters long.',
value: '' },
password:
{ param: 'password',
msg: 'Password must include one lowercase character, one uppercase character, a number, and a special character.',
value: '' },
passwordc:
{ param: 'passwordc',
msg: 'Password must be between 8-50 characters long.',
value: '' } }
我遇到的问题是这是一个“字符串”,遗憾的是它不是对象类型。我需要将它转换为它应该是一个具有嵌套对象的对象。
我不能使用JSON.parse,因为这不是有效的JSON。
如何将此对象字符串更改为对象?这样我就可以遍历并显示相关错误。
感谢您的帮助。 P.S我非常坚持这一点 - 所以如果你知道答案,那么很多布朗尼就会从我身上指向你。干杯!
答案 0 :(得分:1)
好的,这真的很奇怪,我已经到底了。
基本上,express-validator用新的更新回传对象的方式一定存在错误/问题。
我使用了它们的折旧函数validationErrors(),它返回一个对象 - yay。与使用推荐的设置相反:https://github.com/ctavan/express-validator#installation
这给我一个对象,这是一个类型的字符串(我知道很奇怪)。我会让开发人员知道这是一个错误,或者可能是由于我的设置(节点,表达,反应)。
感谢您的回答。
答案 1 :(得分:0)
我认为,这是JSON表示法的一个问题。您获得的当前字符串不是所需的格式。您需要在属性名称和双引号周围添加双引号,而不是单引号。这应该让你的JSON.parse
能够正常工作。
要根本原因,你需要关注从哪里得到这个JSON,并确保它发出适当的JSON格式。
此外,如果您的代码正在创建此JSON,您宁愿不想添加换行符和填充来减小大小。您可以随时使用http://www.jsoneditoronline.org/(或其他人)以友好的格式查看它们。
希望这有帮助!