質問編集履歴
1
説明不足の部分があったため補足しました
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
|
+
```
|