Javascript 更新对象或创建它(如果它没有';不存在吗?

Javascript 更新对象或创建它(如果它没有';不存在吗?,javascript,parse-platform,Javascript,Parse Platform,我正在钻研一些云代码来处理数据并将其保存为一个新类 if(out.length > 0) { var game = Parse.Object.extend("Gamers"); var query = new Parse.Query(game); query.equalTo("playername", player); // using this to find the player since I dont have the objectid query.fin

我正在钻研一些云代码来处理数据并将其保存为一个新类

if(out.length > 0) {   

  var game = Parse.Object.extend("Gamers");
  var query = new Parse.Query(game);
  query.equalTo("playername", player);  // using this to find the player since I dont have the objectid
  query.find({                       
    success: function(results) {

    // Successfully retrieved the object.
    if (results && results.length == "1") {

      var playerObjectId = results[0].id
      /// save only updated data to the local class ????

    } else {
      // no results, create a new local
      console.log('no results')

      // save as a new object
      var gamers = new game();

      gamers.set("somevalue", somevalue);
      gamers.set("somevalue2", somevalue2);

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

  },
  error: function(error) {
    console.log("Error: " + error.code + " " + error.message);
  }
});

} else {
console.log('array is empty, something went wrong')
 //this array is empty
}
在这种情况下,我从另一个类中读取一行,执行一些数学函数,然后将处理过的数据保存到另一个类中,然后由客户机读取

问题是,如果新类中已经存在另一个对象,我只想更新它,而不是创建一个新对象。我在解析文档中知道 它列出了创建对象和更新功能,但不包括要更新的功能(如果存在)和(如果不创建)

下面是一些示例代码。。out数据是为新类准备保存的数据。我可以装箱新的类对象,但是当我更新一些值时 应该触发一个更新而不是创建一个新的,这是事情崩溃的地方

请理解JS不是我的第一语言,所以这可能会被黑客攻击或者完全以错误的方式进行,但是我应该强调我不知道 新班级

if(out.length > 0) {   

  var game = Parse.Object.extend("Gamers");
  var query = new Parse.Query(game);
  query.equalTo("playername", player);  // using this to find the player since I dont have the objectid
  query.find({                       
    success: function(results) {

    // Successfully retrieved the object.
    if (results && results.length == "1") {

      var playerObjectId = results[0].id
      /// save only updated data to the local class ????

    } else {
      // no results, create a new local
      console.log('no results')

      // save as a new object
      var gamers = new game();

      gamers.set("somevalue", somevalue);
      gamers.set("somevalue2", somevalue2);

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

  },
  error: function(error) {
    console.log("Error: " + error.code + " " + error.message);
  }
});

} else {
console.log('array is empty, something went wrong')
 //this array is empty
}

create或update函数有三个不同的位:find、update或create。让我们分别构建这三个

function findGamerWithName(name) {
    var game = Parse.Object.extend("Gamers");
    query.equalTo("playername", name);
    return query.find();
}

function updateGamer(gamer, someValue, someValue2) {
    gamer.set("somevalue", someValue);
    gamer.set("somevalue2", someValue2);
    return gamer.save();
}     

function createGamer(someValue, someValue2) {
    var Gamer = Parse.Object.extend("Gamers");
    var gamer = new Gamer();
    return updateGamer(gamer, someValue, someValue2); 
}
现在我们可以分别理解和测试它们(您应该测试它们)。现在,很容易编写、创建或更新逻辑

function createOrUpdateGamer(name, someValue, someValue2) {
    return findGamerWithName(name).then(function(gamer) {
        return (gamer)? updateGamer(gamer, someValue, someValue2) : createGamer(someValue, someValue2);
    });
}

你问什么?如何更新id==playerObjectId的对象?投票结果如何?