2016-02-14 5 views
0

Я снова задаю вопрос начинающим, но я немного оглянулся и не смог найти ответ, который мне нужен. Я создал сервер Node.JS, вытаскивающий данные для проекта интеграции состояния игры, над которым я работаю, и мне нужно запросить определенные данные из игры.Node.JS req.body Строка слишком длинная?

В основном, что происходит в коде, я устанавливаю переменную newKillStatus в определенную часть файла player_state, из которого я читаю. Прежде чем говорить немного дальше, вот код, я использую: (Если вам нужно больше, пожалуйста, спрашивайте)

fs.readFile('player_state', 'utf8', function(err, killStatus) { 
    var player = 'player' in req.body ? req.body.player : null; 
    if (player && player.state !== killStatus) { 
     var newKillStatus = req.body.player.state.round_kills; 
     if (!newKillStatus) { 
      newKillStatus = ''; 
     } 
     fs.writeFile('player_state', newKillStatus); 
     console.log(newKillStatus); 
    } 
}); 

Так как вы можете видеть, что я пытаюсь установить newKillStatus к req.body.state.round_kills;, которые, от того, что я могу понимать слишком долго, потому что, когда я пытаюсь запустить сервер, он дает мне эту ошибку:

cannot read property 'round_kills' of undefined

но если я избавлюсь от round_kills части он дает мне round_kills, но это также дает мне целую кучу другие статистические данные, в которые я не хочу устанавливать переменную.

Так что в основном мой вопрос только в том, как установить var newKillStatus на req.body.player.state.round_kills без ошибок.

Благодарим за помощь!

EDIT: Я попробовал все решения и многочисленные комбинации строк, возможно, что подчеркивание создает ошибку?

+0

Нет, это не слишком долго. Этого просто не существует. Существует не 'req.body.player.state', а доступ к' .round_kills', который вызывает исключение. Либо у вас есть опечатка, а как «req.body.state.round_kills», или ваша сериализация или синтаксический анализ тела запроса недостаточны. – Bergi

+0

Это очень странно, потому что если я просто использую 'req.body.state' round_kills, будет отображаться ненужная информация, и если я использую' req.body.state.health', который является еще одной частью информации в этом разделе, это работает , Так может ли это быть связано с подчеркиванием, потому что round_killhs тоже не работает. (Другая точка данных) – pmaheras18

+0

Да, у вас действительно есть опечатка. Используйте 'req.body.state.round_kills' вместо' req.body.player.state.round_kills'. Нет '.player'! – Bergi

ответ

0

После нескольких попыток найти ответ сам я нашел его. Я на самом деле очень удивлен, что мне потребовалось столько времени, чтобы это понять. Вероятно, это было на самом деле выше того, что я вызывал, и то, о чем говорила ошибка, вызывало это. Проблема была в самом деле в var player = 'player' in req.body ? req.body.player : null; Мне нужно было изменить req.body.player на req.body.player.state сделать код ниже знал бы, что я ссылаюсь.

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