我想使用javascript更新parse.com中已有的对象;我做的是我首先用查询退回对象,但我不知道如何更新它。
这是我使用的代码,有什么不对吗?
var GameScore = Parse.Object.extend("Driver");
var query = new Parse.Query(GameScore);
query.equalTo("DriverID", "9");
query.find({
success: function(results) {
alert("Successfully retrieved " + results.length + "DName");
results.set("DName", "aaaa");
results.save();
},
error: function(error) {
alert("Error: " + error.code + " " + error.message);
}
});
答案 0 :(得分:20)
问题和答案之间的差异最初可能并不明显 - 因此对于发生在此处的所有人 - 使用 query.first 而不是 query.find 。
query.find() //don't use this if you are going to try and update an object
返回一个对象数组,一个没有“set”或“save”方法的数组。
query.first() //use this instead
返回一个具有这些方法的骨干样式对象。
答案 1 :(得分:15)
我找到了解决方案,以后有人需要它
这里是:
var GameScore = Parse.Object.extend("Driver");
var query = new Parse.Query(GameScore);
query.equalTo("DriverID", "9");
query.first({
success: function(object) {
object.set("DName", "aaaa");
object.save();
},
error: function(error) {
alert("Error: " + error.code + " " + error.message);
}
});
答案 2 :(得分:3)
如果有人收到msg“{”code“:101,”error“:”找不到更新的对象“}”,请检查对象的类权限和ACL,以确保允许读取和写入
答案 3 :(得分:0)
执行以下操作:
var GameScore = Parse.Object.extend("Driver");
var query = new Parse.Query(GameScore);
query.equalTo("DriverID", "9");
query.find({
success: function(results) {
alert("Successfully retrieved " + results.length + "DName");
// - use this-----------------
results.forEach((result) => {
result.set("DName", "aaaa");
});
Parse.Object.saveAll(results);
// --------------------------------
},
error: function(error) {
alert("Error: " + error.code + " " + error.message);
}
});
答案 4 :(得分:0)
您可以这样做:
var results= await query.find();
for (var i = 0; i < results.length; i++) {
results[i].set("DName", "aaaa");
results[i].save();
}