[英]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.