前提・実現したいこと
表題の通りです。
発生している問題・エラーメッセージ
該当のソースコード
createFunction.js
js
1"use script"; 2 3import getFormValue from "../commonFunctions/getFormValue.js"; 4import fetchProcessingNames from "./fetchProcessingNames.js"; 5 6// firestoreへの書き込み処理 7const createFunction = (uid) => { 8 const submitButton = document.getElementById("submit"); 9 10 submitButton.addEventListener("click", async () => { 11 const formId = "create-form"; 12 const selectedElement = document.querySelector( 13 "input[name=processingType]:checked" 14 ); 15 16 const formValue = getFormValue(formId, selectedElement.value); 17 18 const db = firebase.firestore(); 19 20 //【質問】 この辺りで定数を宣言すればいいのか?もしくは、定数だけを集めたファイルを作って、exportして他のファイルでも使い回すのか?2021/03/29 21 const USER = "User"; 22 const PROCESSING = "Processing"; 23 24 const processingNames = await fetchProcessingNames(uid); 25 26 console.log("processingNames: ", processingNames); 27 console.log("processingNames[0]: ", processingNames[0]); 28 29 for (const existingProcessingName of processingNames) { 30 console.log(existingProcessingName); 31 32 if (formValue.processingName === existingProcessingName) { 33 alert("同じ名前の処理は作成できません。"); 34 return; 35 } 36 } 37 38 console.log("forof抜けた"); 39 40 if (formValue) { 41 try { 42 await db 43 .collection(USER) 44 .doc(uid) 45 .collection(PROCESSING) 46 .add({ 47 ...formValue, 48 createdAt: new Date(), 49 updatedAt: new Date(), 50 }); 51 52 alert("追加作業が完了しました。\n管理画面に戻ります。"); 53 location.replace("../admin.html"); 54 } catch (error) { 55 console.log("add error"); 56 } 57 } 58 }); 59}; 60 61export default createFunction;
fetchProcessingNames.js
js
1"user strict"; 2 3const fetchProcessingNames = async (uid) => { 4 return new Promise(async (resolve, reject) => { 5 const db = firebase.firestore(); 6 7 const processingNames = []; 8 9 const USER = "User"; 10 const PROCESSING = "Processing"; 11 12 await db 13 .collection(USER) 14 .doc(uid) 15 .collection(PROCESSING) 16 .get() 17 .then((processingDatas) => { 18 processingDatas.forEach((doc) => { 19 processingNames.push(doc.data().processingName); 20 }); 21 }); 22 23 if (processingNames) { 24 resolve(processingNames); 25 } else { 26 reject("失敗"); 27 } 28 }); 29}; 30 31export default fetchProcessingNames;
試したこと
・forEachやfor~ofやthenメソッドを用いて、processingNamesを受け取ってからconsole.logで表示させようとしましたがうまくいきませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/05 01:15
2021/04/05 01:17