繁体   English   中英

Node.js Express删除req.body不起作用

[英]Node.js Express delete req.body not working

router.delete('/board', function (req, res, next) {
var body = req.body;

if (!isEmpty(body)) {
    var index = findIndexInList(body);
    list.splice(index,1);
    res.sendStatus(200);
    return;
}
list=[];
res.sendStatus(200);
});



function findIndexInList(key) {

  for (var index in list) {
    var value = list[index];
    //value = { '{data:"2"}': '' } TypeOf = Object
    //key = { '{data:"2"}': '' } TypeOf = Object
    console.log(value === key); // why false? I think same so TRUE..
    if( value === key ) {
        return list.indexOf(value);
    }
}
return undefined;
}

你好。 让我问一些关于req.body的问题。
当我从客户端(例如Chrome控制台)发送数据时

(
$.ajax({
type: 'delete',
data : '{data:"2"}
});)

在服务器端,LIST数组具有数据。
所以我将相同的数据发送到服务器端。

例如

list = [{ '{data:"1"}': '' },{ '{data:"2"}': '' } ];
//value = { '{data:"2"}': '' } Type = Object
//key = { '{data:"2"}': '' } Type = Object
console.log(value === key); // FALSE

为什么是假的? 我认为相同的对象和数据非常正确。

您正在用javascript比较Objects ,这种方式是不可能的。 没有比较对象的好方法。 但是,如果您的对象很简单,没有方法,则可以在将其转换为json字符串后进行比较

{} !== {}
key = { '{data:"2"}': '' }
value =  { '{data:"2"}': '' }
JSON.stringify(key)  === JSON.stringify(value)

当javascript使用double或Triple eq测试对象相等性时,它将始终检查内部引用。 引用这里

运行这个

var g = {some: 'thing'}
console.log({} == {});
console.log({a:1} == {a:1});
console.log({a:1} == {a:2});
console.log({} === {});
console.log(g === g);
console.log(g == g);

给我们

false
false
false
false
true
true

如果需要测试对象内容的相等性,则应使用类似此模块的内容https://github.com/substack/node-deep-equal

如您所见它可以告诉您两个不同的objet实例是否具有相同的内容。

您也可以使用上述的尖细技巧。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM