Как получить objectId объекта перед сохранением

Клиент отправляет новый recipe. Объект recipe включает в себя массив cuisines, похожих на категории, к которым принадлежит этот рецепт.

В функции beforeSave() Cloud Code я хочу создать записи в отдельной таблице с recipes и cuisines.

Другими словами, это мои таблицы:

cuisine:

objectId | name | country | spicy | fat |
-----------------------------------------

recipe:

objectId | name | ingredient | author |
---------------------------------------

CuisineRecipe:

objectId | cuisine | recipe |
-----------------------------

Когда приходит новый рецепт, я хочу взять его идентификаторы cuisine и создать записи в таблице CuisineRecipe.

Однако в моем коде request.object.id возвращает undefined.

Я предположил, что это может быть потому, что перед сохранением у него нет идентификатора. Однако я попытался изменить на afterSave, и это все еще не работает (т.е. ничего не сохраняется в БД)

Вот мой облачный код:

var _ = require('underscore');

Parse.Cloud.beforeSave("Recipe", function(request, response) {
    // CREATE CuisineRecipe ENTRIES

    //getCuisines
    var cuisines = request.object.get("cuisines");
    // FOR EACH cuisines
    var promise = Parse.Promise.as();
    _.each(cuisines, function(CuisineObj){
        console.log(CuisineObj.text);

        // Verify that Cuisine exists
        var CuisineQuery = new Parse.Query("CuisinePublic");
        CuisineQuery.equalTo("CuisineId", CuisineObj.text);
        promise = promise.then(function(){
            return CuisineQuery.find({
                success: function(results){
                    console.log("results: " + results);
                    // If results is 1, it exists, everything is good. Proceed to adding CuisineRecipe entry
                    if (results.length == 1){
                        var CuisineRecipe = Parse.Object.extend("CuisineRecipe");
                        var CuisineRecipe = new CuisineRecipe();
                        CuisineRecipe.set("CuisineId", CuisineObj.text);
                        CuisineRecipe.set("Cuisine", results[0].id);
                        CuisineRecipe.set("Recipe", request.object.id);
                        CuisineRecipe.save();
                    }
                },
                error: function(results){
                    console.log("Error");
                    console.log("results: " + results);
                }
            });
        });

        return promise;
    });
    promise.then(function(){
        response.success();
    });
});

person CodyBugstein    schedule 11.09.2015    source источник


Ответы (1)


Я не обязательно понимаю ваши разные классы и их отношения, но с request.object.id вам нужно указать класс, например request.object.get("cuisines").id

person Santhosh    schedule 11.09.2015
comment
Я хочу получить идентификатор сохраняемого объекта Recipe - person CodyBugstein; 11.09.2015