节点.js快速删除 req.body 不起作用

Node.js Express delete req.body not working

本文关键字:req body 不起作用 删除 js 节点      更新时间:2023-09-26
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使用双均衡器或三重均衡器测试对象相等性时,它将始终检查内部引用。 参考这里

运行此

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

正如您在此处看到的,它能够告诉您两个不同的对象实例是否具有相同的内容。

您也可以使用上述字符串化尖端。