【问题标题】:beforeSave doesn't modify request.objectbeforeSave 不修改 request.object
【发布时间】:2021-07-16 04:26:04
【问题描述】:

我正在尝试通过云代码为新用户添加一些附加属性:

Parse.Cloud.beforeSave(Parse.User, (request) => {
    if (!request.original) {
        // New user
        Parse.Config.get()
            .then((config) => {
                const ProfileIcon = Parse.Object.extend("ProfileIcon");
                const iconId = config.get("defaultProfileIcon");
                const user = request.object;
                // ...many user.set
                user.set("profileIcon", ProfileIcon.createWithoutData(iconId), {
                    useMasterKey: true,
                }); // Pointer
                // This will save as expected, but cause recursion
                // user.save({ useMasterKey: true });
            })
            .catch((err) => {
                console.error(err);
            });
    }
});

上面的代码触发并执行没有任何错误,但是当我检查数据库时,我的自定义属性都没有出现。传递主密钥也无济于事。我该如何解决这个问题?
还是因为来自客户端的请求(Android,无权访问主密钥),如果是这样,那么我该如何设置请求的主密钥,因为 Parse.Cloud.useMasterKey() 已弃用?

【问题讨论】:

    标签: parse-platform parse-server parse-cloud-code


    【解决方案1】:

    这里,modifying object on save 没有提到任何关于 return 的内容,但 before save file 有。所以我想我会试一试,结果它奏效了。仍然不确定这是否是正确的方法。

    【讨论】:

    • 是的。这是正确的方法。您需要返回承诺,否则 Parse 将不会等待异步方法完成并会在您设置新字段之前保存对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多