質問編集履歴

1

説明不足の部分があったため補足しました

2021/09/14 15:22

投稿

abc1222
abc1222

スコア24

test CHANGED
File without changes
test CHANGED
@@ -133,3 +133,75 @@
133
133
  関数はcloud Functionで動かしています。
134
134
 
135
135
  関数を呼び出す申請フォームを友達に触ってもらってみたところ、記載の現象が起きています。
136
+
137
+
138
+
139
+ ### 修正依頼を受けての追記
140
+
141
+ 申請と言っても、定員数以内かどうかだけをチェックして、定員数以内ならその場で自動的に許可&クライアント側に許可されましたとその場で表示する仕様です。
142
+
143
+ 定員オーバーなら、falseを返し、その場で定員オーバーと表示されます。
144
+
145
+ 申請フォームを作った人が、手動で許可するといったものではありません
146
+
147
+
148
+
149
+ そのため、質問に記載したコードの下記の部分(定員以内の場合の挙動)以外でnumberを+1することはありません。
150
+
151
+ transaction.update(numberRef, { number: newNumber })
152
+
153
+
154
+
155
+ numberを-1することはあるので、質問のコードに追加しておきます
156
+
157
+ numberを-1するのは、キャンセルが生じた場合です
158
+
159
+
160
+
161
+ ```Javascript
162
+
163
+ exports.cancelSet = functions.region(REGION).https
164
+
165
+ .onCall(async(data, context) => {
166
+
167
+
168
+
169
+ const numberRef = db.collection("Number").doc(//id);
170
+
171
+
172
+
173
+ try {
174
+
175
+ return db.runTransaction(async(transaction) => {
176
+
177
+ const numDoc = await transaction.get(numberRef)
178
+
179
+ if (!numDoc.exists) {
180
+
181
+ throw "Document does not exist!"
182
+
183
+ }
184
+
185
+ var newNumber = numDoc.data().number - 1
186
+
187
+ transaction.update(numberRef, { number: newNumber })
188
+
189
+ }).then(() => {
190
+
191
+ return true
192
+
193
+ }).catch((error) => {
194
+
195
+ return false
196
+
197
+ });
198
+
199
+ } catch (error) {
200
+
201
+ return error
202
+
203
+ }
204
+
205
+ })
206
+
207
+ ```