Javascript 删除云代码中的指针属性

Javascript 删除云代码中的指针属性,javascript,parse-platform,parse-cloud-code,Javascript,Parse Platform,Parse Cloud Code,从类“MyModel”中删除一个对象时,下面的代码试图通过指针属性删除与其相关的两个对象,一个称为“颜色”,另一个称为“目标”。这些对象存在于数据中,但日志显示“未找到对象”错误 代码源于 云代码: function deleteMyModelPointer(myModel, pointerName, pointerClass) { var pointer = myModel.get(pointerName); if (pointer) {

从类“MyModel”中删除一个对象时,下面的代码试图通过指针属性删除与其相关的两个对象,一个称为“颜色”,另一个称为“目标”。这些对象存在于数据中,但日志显示“未找到对象”错误

代码源于

云代码:

function deleteMyModelPointer(myModel, pointerName, pointerClass) {
        var pointer = myModel.get(pointerName);
        if (pointer) {
            var query = new Parse.Query(pointerClass);
            return query.get(pointer).then(function(relatedObject) {
                return relatedObject.destroy();
            });
        } else {
            return null;
        }
    }

    Parse.Cloud.beforeDelete("MyModel", function(request, response) {
        var myModel = request.object;
        deleteMyModelPointer(myModel, "colors", "ColorModel").then(function() {
            return deleteMyModelPointer(myModel , "goal", "Goal");
        }).then(function() {
            response.success();
        }, function(error) {
            response.error(error);
        });
    });
日志:


用户wMgAGMOPNK的MyModel触发删除之前的v14:
输入:{“object”:{“ACL”:{“wMgAGMOPNK”:{“read”:true,“write”:true},“colors”:{“指针”、“类名”:“ColorModel”、“objectId”:“Z3gEplJ0tq”},“counter”:1,“createdAt”:“2015-12-10T14:06:19.630Z”、“createdatlocal”:{“日期”、“iso”:“2015-12-10T14:06:18.825Z”},“deletelocally”:false,“目标”:“目标”:“目标”:“目标”:“BkruZqhyJ7”},“lastModifiedAt”:{“uuu类型”:“日期”,“iso”:“2015-12-10T14:06:24.270Z”},“objectId”:“LuobH2P8iz”,“resetValue”:0,“stepBy”:1,“标题”:“ggggggggg”,“updatedAt”:“2015-12-10T14:06:24.670Z”,“用户”:{“uuu类型”:“指针”,“类名”:“用户”,“objectId”:“wMgAGMOPNK”}}
结果:{“代码”:101,“消息”:“未找到对象”。}


但是对象浏览器和客户端的两个指针仍然存在。正如我所说的,ACL被设置为所有3个对象(具有读、写权限)的登录PFUser。

问题是操作代码是为objectId属性而不是指针编写的。有了objectId,正确的操作是
查询。get()
获取相关对象,但对于指针,只需
获取
指针(不需要知道其类别)


调用方可以保持不变,只需删除第三个参数。

代码已经很简单(并且很漂亮:-)。只有一种方法:我们必须把手弄脏。在每一步添加日志,特别是在销毁点。注释销毁,直到我们知道发生了什么。在此处发布日志。(我打赌你不需要,因为你会在粘贴之前弄清楚)嘿,伙计,是的;)会的。brb:非常抱歉。我也看了第二眼。代码显然误解了这一需要,即删除与指针属性(而不是对象id字符串)相关的对象。请检查我下面的答案。如果答案正确,我将返回并更正原始答案。我想是的,它会记录id:
{“objectId:“j1eyp5GdR3”}
将尝试您的答案并让您知道。救赎!再次为头部错误感到抱歉。我将修复原始答案,为未来的读者提供两种选择。
function deleteMyModelPointer(myModel, pointerName) {
    var pointer = myModel.get(pointerName);
    if (pointer) {
        return pointer.fetch().then(function(relatedObject) {
            return relatedObject.destroy();
        });
    } else {
        return null;
    }
}