我不是一个JavaScript开发者,但我必须将它用于我的后端。出于某种原因来自客观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 :(得分:1)
尝试:gameScore.set("playerName", thePlayer.toString());
应该有用。
答案 1 :(得分:1)
我认为这是因为当你定义thePlayer
时,它是一个字符串对象(见下面的例子)
当您尝试将其设置为playerName
时,查询尚未完成(尚未调用成功函数),因此您将字符串对象设置为playerName,因此您会收到该错误
如果您定义了thePlayer
,请参阅此处的示例http://jsfiddle.net/uhpwgoum/1/
var thePlayer = "";
您不会收到该错误,但如果查询未完成,您的playerName
可能会为空字符串。