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的对象?投票结果如何?