見出し画像

ノーコード Bubbleでオートインクリメントを実現する方法

こんにちは〜 現在はbubbleメインで開発を行なっているシラガーまさしです。
noteでの初投稿となる今回はbubbleでオートインクリメント(もどき)を実現する。となります。一般エンジニアからするとDBにおけるオートインクリは当然の機能だと思うんですけどね。

bubble初学者向き

bubbleのデータベース(以下DB)は使い易いんですけど、自動連番付加が出来ません。自動連番付加は英語でAuto Incrementと呼び、MySQLなどのDBでは標準の機能です。

なので、当然の如くbubbleにもあるものだと思い・・・???

へっ!無いやん!となったわけです。

という訳で自分で作るか。となりました。

因みに予めCSVでID付きデータをインポートする場合は必要ありませんね。

※注 userテーブルにこの方法は適用出来ません。bubbleのuserテーブルはちょっと特殊でサインアップから登録するかdataタブから直接追加するしかありません。

前準備
1.タイプ作成(一般的なDBではテーブルの事)
2.レイアウトにフィールド・ボタン等を設置
3.Repeating Group作成・配置
4.ボタン設置・workflow作成

1.タイプ作成

タイプ名はstudentsとします。フィールド(一般的なDBではカラム)はID(number)とname(text)の二つを作ります。

スクリーンショット 2021-08-15 17.16.43

2.レイアウトにフィールド・ボタン等を設置

レイアウト画面へ行き、Inputを三つ設置しますが、まず一つ目のInputを配置
Input名をInput SNとします。
そして図のようにIntial contentを Search for students:last item's IDとします。
これはStudentテーブルのIDカラムの最終値を取り出す。という事。

スクリーンショット 2021-08-15 17.18.56

次にInput startを配置。これは任意の数字から連番をスタートしたい場合に対応する為です。これが無ければ必ず1から連番がスタートする事になります。しかし、実際には1000番からスタートしたいとか、状況に応じて色々あるはず。その為のInputです。

スクリーンショット 2021-08-15 17.23.53

同じ要領でInput nameも配置します。

3.そしてRepeating groupを配置

Data sourceはstudents テーブル。表示させる内容はCurrent cell's Student's IDとCurrent cell's Student's nameです。

スクリーンショット 2021-08-15 17.27.24

4.ボタン設置 workflow作成

いよいよ最後の仕上げ。作成ボタンを配置します。

スクリーンショット 2021-08-15 17.31.29

このボタンにWorkflowを書きます。
Data→Creat a new thing→studentを選択し図の様にします。
重要なのが ID = の部分。
計算式を見れば分かりますよね。startに入れた値プラスIDの最終値を足している訳です。
※あれ?でもさ?これってIDの最終値をInput SNに表示させてそれを式に使っているけど、ダイレクトに書けば良くね?って思っている人いますよね。
そうです。それでもOK。その場合Input SNが必要有りません。そして式はこの様になります ID = Input start's value + Search for students:last item's ID + 1
しかし、この場合スピードを犠牲にする事になります。極力、式中でDo a Searchしない方が良いです。

スクリーンショット 2021-08-15 17.33.21

はいこれで出来上がりました。上の空欄フィールドはIDの最終値を取得するためのものなので適当な場所に配置してください。start値は最初の1回目だけ入力すればOKです。あとは名前を入力して作成ボタンを押すだけ。

スクリーンショット 2021-08-15 17.59.49

最後に

恐らくノーコードからbubbleに入った人はオートクリメント機能は意識してないのかなぁと思います。でも一般的なプログラミング言語を習得している人からすると「何故この機能無いんだよ」と感じると思うんですよね。bubbleもDB標準機能としてオートクリメントを搭載して欲しいですね。
(2021年8月15日現在の情報になります。その後bubbleに標準搭載されればこのworkflowは必要有りませんね。)

補足

これ以外にも実現方法は有ります。例えばRepeatingGroupをカウントしそれにプラス1する方法。但しこの場合は任意の数から始める事が出来ませんのでやはり上記方法がベストかな?と思います。

最後まで読んで頂きありがとうございました。お役に立てれば嬉しいです。


この記事が気に入ったらサポートをしてみませんか?