我正在使用 Parse 云代码在删除标签时清除指向“标签”对象的所有指针。调用了“beforeDelete”,我没有收到任何错误 + 控制台打印出正确的“Song”对象,它具有指向已删除“标签”的指针。
但是指针并没有从数组中移除。
Parse.Cloud.beforeDelete("Tag", function(request, response) {
var query = new Parse.Query("Song");
query.equalTo("tags", request.object);
query.include(["tags"]);
query.find({
success: function(songs) {
console.log(songs);
for (var i = 0; i < songs.length; i++) {
songs[i].remove("tags",request.object);
songs[i].save();
};
response.success();
},
error: function(error) {
response.error(error);
}
});
});
我做错了什么?
谢谢 沙尼
最佳答案
object.save();
是异步的。您在保存操作完成之前调用 response.success()
。您可以使用 query.each() :
var query = new Parse.Query("Song");
query.equalTo("tags", request.object);
query.include("tags");
query.each(function (song) {
song.remove("tags",request.object);
song.save();
}).then(function() {
response.success();
}, function(error) {
response.error(error);
});
或者您可以使用 parallel promises
var _ = require("underscore");
var query = new Parse.Query("Song");
query.equalTo("tags", request.object);
query.include("tags");
query.find().then(function(songs) {
var promises = [];
_.each(songs, function(song) {
song.remove("tags",request.object);
promises.push(song.save());
});
// Return a new promise that is resolved when all of the saves are finished.
return Parse.Promise.when(promises);
}).then(function() {
response.success();
}, function(error) {
response.error(error);
});
关于javascript - 解析云代码 - 从指针数组中删除指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26315038/