gpt4 book ai didi

javascript - 服务器端验证post json数据

转载 作者:太空宇宙 更新时间:2023-11-04 00:42:28 24 4
gpt4 key购买 nike

我使用javascript nodejs作为服务器端,每次从客户端获取帖子时,我都会验证数据,确保数据结构每个键/值都存在,所以我做了如下所示的操作。

我想知道是否有更好的想法可以做到这一点,也许更易读,
因为我将每个级别放入一个 if(..) 中,并且无法像 json/javascript 对象那样更改行,因此它很长且难以维护。

通常人们会怎么做?
构建正确的 json 对象结构,并与发布数据进行比较?

如有任何建议,我们将不胜感激

正确的数据应该是这样的:

request.data = {
"user": {
"status": "int",
"role": {
"role": "int"
},
"information": {
"email": "text",
"password": "text",
"username": "text",
"country": "text",
... a lot ....
}
},
}

服务器端验证

    var validateRequest = 'true';
if (typeof request.data.user == 'undefined') {
validateRequest = 'false';
} else {
if (typeof request.data.user.status == 'undefined' || typeof request.data.user.role == 'undefined' || typeof request.data.user.information == 'undefined') {
validateRequest = 'false';
} else {
if (typeof request.data.user.role == 'undefined' || typeof request.data.user.information.email == 'undefined' ... ) {
validateRequest = 'false';
}
}
}

if (validateRequest != 'false') {
// validate data type

// use data crud

}

更新

我尝试在服务器端设置正确的json结构,并与post进行比较,我发现了一些 json diff module但找不到如何正确使用仅比较 key

var a = {
"information": {
"email": "text",
"password": "text"
}
}

var b = {
"information": {
// "email": "text",
"password": "text"
}
}
console.log(jsondiffpatch.diff(a, b));
I only know if data not different will get undefined
if b remove "email"
get this in console ?? ¨ information: ¨ email: ÿ 'text', 0, 0 ¦ ¼ ¼
if b email val = textt
get this information: ¨ email: ÿ 'text', 'textt' ¦ ¼ ¼

最佳答案

我找不到方法确定使用后的结果 jsondiffpatch在我的问题中,关键不同或值(value)不同,
所以我找到了另一个模块 https://github.com/mirek/node-rus-diff只需检查 $unset 或 $set 即可工作

var diff = require('rus-diff').diff;

var result = diff(a, b);

if (typeof result.$unset != 'undefined') {
console.log('different key');
}

关于javascript - 服务器端验证post json数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36098290/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com