Issue
How to store the id of a document inside the same doc in flutter firestore
I am getting the recipe id null
Future updateRecipeData(RecipeModel recipeModel) async {
await recipeDataCollection.doc().set({
rRecipeTitle: recipeModel.title,
rRecipeBundleName: recipeModel.recipeBundleName,
rCookingTime: recipeModel.cookingTime,
rDateTime: recipeModel.dateTime,
rImgPath: recipeModel.imgPath,
rIngredients: recipeModel.ingredients,
rNumOfLikes: recipeModel.numOfLikes,
rPreparation: recipeModel.preparation,
rServings: recipeModel.servings,
});
print('Data TRANSFORMED');
}
List<RecipeModel> getRecipes(QuerySnapshot snapshot) {
return snapshot.docs.map((doc) {
return RecipeModel(
title: doc.data()[rRecipeTitle],
cookingTime: doc.data()[rCookingTime],
imgPath: doc.data()[rImgPath],
ingredients: List.from(doc.data()[rIngredients]),
preparation: List.from(doc.data()[rPreparation]),
numOfLikes: doc.data()[rNumOfLikes],
dateTime: doc.data()[rDateTime],
servings: doc.data()[rServings],
recipeBundleName: doc.data()[rRecipeBundleName],
recipeId: doc.id,
);
}).toList();
}
Stream<List<RecipeModel>> get recipeData {
return recipeDataCollection.snapshots().map(getRecipes);
}
This is the code I want to the doc id store it inside recipeid.
RECIPE MODEL CODE
class RecipeModel {
String title, imgPath, recipeBundleName, recipeId;
String cookingTime, servings;
int numOfLikes;
String dateTime;
List<String> ingredients, preparation;
RecipeModel({
this.title,
this.cookingTime,
this.imgPath,
this.recipeBundleName,
this.servings,
this.numOfLikes,
this.dateTime,
this.ingredients,
this.preparation,
this.recipeId,
});
}
I shared the recipe model and has recipeId to store the id of the doc inside same doc .
Solution
can you share the codes? In order to print the id of the same document, you need to create the id in the codes and send it while setting or updating it.
answer:
String docId = recipeDataCollection.doc().id; // id create await
recipeDataCollection.doc(docId).set({
docId: docId, // this
rRecipeTitle: recipeModel.title,
rRecipeBundleName: recipeModel.recipeBundleName,
rCookingTime: recipeModel.cookingTime,
rDateTime: recipeModel.dateTime,
rImgPath: recipeModel.imgPath,
rIngredients: recipeModel.ingredients,
rNumOfLikes: recipeModel.numOfLikes,
rPreparation: recipeModel.preparation,
rServings: recipeModel.servings,
});
Answered By - sedatg
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.