Клиент отправляет новый recipe
. Объект recipe
включает в себя массив cuisines
, похожих на категории, к которым принадлежит этот рецепт.
В функции beforeSave()
Cloud Code я хочу создать записи в отдельной таблице с recipe
s и cuisine
s.
Другими словами, это мои таблицы:
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();
});
});