0

クライアントが新しいrecipe. recipeオブジェクトには、このレシピが属するカテゴリのような配列が含まれていcuisinesます。

Cloud Code 関数で、s とsbeforeSave()を持つ別のテーブルにエントリを作成したいと考えています。recipecuisine

言い換えれば、これらは私のテーブルです:

cuisine:

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

recipe:

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

CuisineRecipe:

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

cuisine新しいレシピが入ってきたら、そのID を取得してCuisineRecipeテーブルにエントリを作成したいと考えています。

ただし、私のコードでは、 をrequest.object.id返しますundefined

これは、保存する前にIDがないためだと思います。ただし、に変更しようとしましたがafterSave、まだ機能しません (つまり、何も DB に保存されません)。

ここに私のクラウドコードがあります:

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();
    });
});
4

1 に答える 1

0

さまざまなクラスとその関係を必ずしも理解しているわけではありませんが、request.object.id次のようにクラスを指定する必要がありますrequest.object.get("cuisines").id

于 2015-09-11T07:49:35.380 に答える