2016-05-08 4 views
0
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; 
} 

Hello. Позвольте мне задать несколько вопросов о req.body.
, когда я отправить данные от клиента, таких как хром консоль

Node.js Экспресс удалить req.body не работает

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

почему ложь? Я думаю, что тот же объект и данные так ИСТИННО.

+0

'{}! == {}' .... – YOU

+0

Просьба обновить свой вопрос. Потому что вы запрашиваете сравнение объектов, но название неверно. –

ответ

1

Вы сравниваете Objects в javascript, который не может быть таким. Нет хорошего способа сравнить объекты. Однако, если ваш объект просто, без каких-либо методов, то вы можете сравнить после преобразования его в строку JSON

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

Когда JavaScript тесты для объектов равенствами, используя двойную или тройную эк, она всегда будет проверять внутренние ссылки. 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 одинаковый контент или нет.

вы также можете использовать строчный наконечник, как указано.

Смежные вопросы