如何将一个空白字符串变量设置为等于另一个字符串变量

How to set a blank string variable equal to another string variable

本文关键字:变量 字符串 设置 另一个 空白 一个      更新时间:2023-09-26

我不是javascript开发人员,但我必须将其用于我的后端。出于某种原因,我来自一个客观的c背景,无法在javascript中执行最简单的任务。我所要做的就是将变量"the layer"中的这个字符串保存到我的后端"playerName"键下。忽略其他所有内容。这一切都与第2、13和24行有关。我的云日志一直说键"playerName"需要一个字符串,但得到了一个对象。所以我的问题是,为什么要将播放器保存为对象?

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);
  }
});
});

我认为这是因为当您定义thePlayer时,它是一个字符串对象(见下面的示例)

http://jsfiddle.net/uhpwgoum/

当你试图将其设置为playerName时,查询尚未完成(成功函数尚未调用),所以你将字符串对象设置为playerName,因此你会得到错误

如果您定义了thePlayer,请参见此处的示例http://jsfiddle.net/uhpwgoum/1/

var thePlayer = "";

您不会得到那个错误,但如果查询没有完成,您的playerName可能是空字符串。

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

这应该行得通。