解析服务器云代码 - 更新或创建 object

Parse Server Cloud Code - Update OR Create object

我在 AWS 和 mLab 上使用 Parse Server 取得了巨大成功,但我的 Cloud Code 除外。主要问题围绕着我之前的 CreateUpdate 和 object 代码。我曾经通过在收藏夹 class 上查询用户指针来执行此操作。如果一行包含用户指针,那么我需要更新它的内容,如果它不存在,则需要创建一行。

旧Parse.com代码

Parse.Cloud.define("saveFavourites", function(request, response) {

    console.log(request.params.favourites);

    var Favourites = Parse.Object.extend("Favourites");
    var query = new Parse.Query("Favourites");

    query.equalTo('user', request.user);
    query.first({
        success: function(results) {

            console.log(JSON.stringify(results));

            console.log(results)
            if (results === undefined) {


                var favourites = new Favourites();

                favourites.save({
                    user: request.user,
                    favourites: request.params.favourites
                }, {
                    success: function(favourites) {
                        // The object was saved successfully.
                    },
                    error: function(favourites, error) {
                        // The save failed.
                        // error is a Parse.Error with an error code and message.
                    }
                });

            } else {

                results.set("favourites", request.params.favourites);
                results.set("userId", request.user.id);
                results.save();
            }

            response.success(results);
        },
        error: function(error) {
            error.message("favourites lookup failed");
        }
    });
});

新的解析服务器代码

Parse.Cloud.define("saveFavourites", function(request, response) {

console.log('user is : ' + JSON.stringify(request.user));

var Favourites = Parse.Object.extend("Favourites");
var query = new Parse.Query("Favourites");

query.equalTo("user", request.user);
query.first({
    useMasterKey: true
}, {
    success: function(results) {

        if (results && results.length > 0) {

            console.log('running found');
            favourites.set("favourites", request.params.favourites);
            favourites.set("userId", request.user.id);
            favourites.save();
            response.success();

        } else {

            var favourites = new Favourites();

            favourites.set("user", request.user);
            favourites.set("favourites", request.params.favourites);
            favourites.set("userId", request.user.id);
            favourites.save();
            response.success();
        }
    },
    error: function(error) {
        console.log(error.message);
    }
});
});

除非回调完成,否则不要响应。在每个解析请求错误上设置 response.error。

Parse.Cloud.define("saveFavourites", function(request, response) {

    console.log(request.params.favourites);

    var Favourites = Parse.Object.extend("Favourites");
    var query = new Parse.Query("Favourites");

    query.equalTo('user', request.user);
    query.first({
        //is this query need masterKey?
        useMasterKey: true,
        success: function(results) {

            console.log(JSON.stringify(results));

            console.log(results)
            if (results === undefined) {


                var favourites = new Favourites();

                favourites.save({
                    user: request.user,
                    favourites: request.params.favourites
                }, {
                    success: function(favourites) {
                        // The object was saved successfully.
                        response.success(results);
                    },
                    error: function(favourites, error) {
                        // The save failed.
                        // error is a Parse.Error with an error code and message.
                        response.error(error);
                    }
                });

            } else {

                results.set("favourites", request.params.favourites);
                results.set("userId", request.user.id);
                results.save(null, { useMasterKey: true }).then(response.success, response.error);
            }


        },
        error: function(error) {
            error.message("favourites lookup failed");
            response.error(error);
        }
    });
});