2014-09-15 4 views
0

Im не javascript dev, но я должен использовать его для моего бэкэнда. По какой-то причине из объективного фона c я не могу выполнить самые простые задачи в javascript. Все, что я хочу сделать, это сохранить эту строку, которая находится в переменной «thePlayer», на моем бэкэнд под ключом «playerName». Игнорируйте все остальное. все о строках 2, 13 и 24. Мой журнал облаков продолжает говорить, что ключ «playerName» ожидал строку, но получил объект. Итак, мой вопрос в том, почему thePlayer получает спасение как объект?Как установить пустую строковую переменную, равную другой строковой переменной

Parse.Cloud.define("getUsers", function(request, response) { 
    var thePlayer = new String(); <<<*********************************************** 
    var query = new Parse.Query(Parse.User); 
query.find({ 
    success: function(results){ 
     var users = []; 
     //extract out user names from results 
     for(var i = 0; i < results.length; ++i){ 
      users.push(results[i].id); 
     } 
     var rand = users[Math.floor(Math.random() * users.length)]; 
     console.log("The random user is" + rand); 
     thePlayer = rand; <<<****************************************************** 
     response.success(users); 
    }, error: function(error){ 
     response.error("Error"); 
    } 
}); 

var GameScore = Parse.Object.extend("Messages"); 
var gameScore = new GameScore(); 


gameScore.set("score", 1337); 
gameScore.set("playerName", thePlayer); <<<************************************************** 
gameScore.set("cheatMode", false); 

gameScore.save(null, { 
    success: function(gameScore) { 
// Execute any logic that should take place after the object is saved. 
alert('New object created with objectId: ' + gameScore.id); 
    }, 
    error: function(gameScore, error) { 
// Execute any logic that should take place if the save fails. 
// error is a Parse.Error with an error code and message. 
alert('Failed to create new object, with error code: ' + error.message); 
    } 
}); 
}); 
+0

Используйте один '=' для назначения, два '==' для сравнения. – Pointy

+0

Это было одно из моих исправлений, которые я сделал перед своим сообщением, чтобы попытаться исправить это. Я изменил его, и он все еще говорит о своем объекте. – ian

+0

* «Я не разработчик javascript, но я должен использовать его для моего бэкэнда» * - означает ли это, что вы используете Node.js? – jww

ответ

1

Я думаю, это потому, что, когда вы определили thePlayer, это объект строки (смотрите пример ниже)

http://jsfiddle.net/uhpwgoum/

и при попытке установить его playerName, запрос еще не завершена (функция успеха пока не называется), так что вы настраиваете объект строкового Playername поэтому вы получаете эту ошибку

Если вы определили thePlayer как видите пример здесь http://jsfiddle.net/uhpwgoum/1/

var thePlayer = ""; 

вы не получите эту ошибку, но ваш playerName, вероятно, будет пустой строкой, если запрос еще не закончен.

+0

yep, который определенно помог. thePlayer теперь передается как строка, но, как вы сказали, он пуст. Любые предложения о том, как это исправить? есть ли ожидание? – ian

+0

Установите playerName в функцию успеха, так что вы точно знаете, что это будет переменная rand. Я не знаю, как работает ваша программа, но было бы лучше инициализировать gameScore в успехе. Попробуйте и посмотрите, как это работает, если у вас возникнут проблемы, вы всегда можете задать другой вопрос – Huangism

1

Try: gameScore.set("playerName", thePlayer.toString());

, который должен работать.

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