Node.js Express删除req.body无法正常工作

时间:2016-05-08 09:56:45

标签: javascript arrays node.js express

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 console

(
$.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

为什么错?我认为相同的对象和数据都是真的..

2 个答案:

答案 0 :(得分:1)

您正在比较javascript中的Objects,这是不可能的。没有比较对象的好方法。但是,如果您的对象很简单,没有方法,那么您可以在将其转换为json string

之后进行比较
{} !== {}
key = { '{data:"2"}': '' }
value =  { '{data:"2"}': '' }
JSON.stringify(key)  === JSON.stringify(value)

答案 1 :(得分:0)

当javascript测试对象均衡时,使用double或triple eq,它将始终检查内部引用。 ref here

运行此

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

这样的东西

正如您所见here,它能告诉您两个不同的objet实例是否具有相同的内容。

您也可以使用提到的字符串化提示。