Horizo​​n-リアルタイムJavaScriptバックエンド





Horizo​​nとは何ですか?



Horizo​​nは、NoSQL RethinkDBデータベース、コンソールユーティリティhorizon



hz



)、承認とACL、クライアント上のデータベースをhorizon.js



ためのクライアントJSライブラリhorizon.js



を含む製品です。



つまり、Horizo​​nはシンバックエンドです。データベースと、クエリレベルでのデータベースへのユーザーアクセスルールです。



中身は?



Rethinkdb


コレクションの変更に関する通知を送信できる便利なNoSQLデータベース。 すでにそれについて書いたhabrで:「RethinkDBでリアルタイムのWebアプリケーションを構築します 」。



NoSQL RethinkDBの概要:





コンソールユーティリティ


Horizo​​nのインストール後、 horizon



(またはhz



)ユーティリティがすぐに利用可能になります。 その助けを借りて、次のことができます。





ACL(アクセス制御リスト)


Horizo​​nはすぐにOAuth認証( JSON Web Tokens standard)をサポートし、Facebook、Github、Google、Slack、Twitch、Twitter、Auth0のプロバイダーを使用できます(後者を使用すると、このリストを大幅に拡張できます)。



いくつかのデフォルトのユーザーグループがあります。





グループごとに、各コレクションの読み取り/書き込み要求のホワイトリストを構成できます。 戦闘モードでは、データベースへの各リクエストがこのリストでチェックされ、ルールの1つが正しい場合、リクエストが実行されます。 ルールは、通常のデータベースクエリとワイルドカード機能の組み合わせです。



クエリのサンプルACLルール



許可されていないユーザー、ユーザープロファイルの読み取り:



 [groups.unauthenticated.rules.read_profile] template = "collection('users').anyRead()"
      
      





許可ユーザーによるプロファイルの読み取り:



 [groups.authenticated.rules.read] template = "collection('posts').anyRead()"
      
      





ここでanyRead()



置換関数が使用されることに注意してください。これは、レコードを読み取る機能を意味します。 この関数は実際のクエリでは使用されません。



ユーザープロファイル情報の更新:



 [groups.authenticated.rules.upadate_profile] template = "collection('users').upadate({id: userId(), username: any()})"
      
      





ここでは、 userId()



any()



2つの置換関数が使用されます。 userId()



-現在の許可ユーザーのIDを置き換えます。 any()



-データを置換します。



理論的にはどのように機能しますか? たとえば、データベースにクエリを実行する場合: update({id: 1, username: 'Bob'})



、データベース側で、すべてのルールがチェックされ、キーがチェックされます。 入力時に、データベースはid=1



を参照し、ルールに従って、データベースはキーid=userId()



でオブジェクトを構築し、 1



userId()



を比較しようとします。 同じ操作がusername



キーでも発生します: “Bob”



any()



がチェックされます。 2番目の場合、 any()



関数を使用すると、任意のデータをスキップできます。ここでは、入力データにusername



キーが存在することを確認しました。 すべてが順調であれば、リクエストは成功します。



horizo​​n.js


アプリケーションWebサーバーを起動すると、クライアントライブラリ/horizon/horizon.js



が利用可能になり/horizon/horizon.js



。 次のことができます。





ここでメソッドの全リストを見ることができます: horizo​​n.io/api/horizo​​n、horizo​​n.io/api/collection



どのように機能しますか?



Horizo​​nがチャットでどのように機能するかを示す公式の例がいくつかあります( ReactVueすべての例 )。



ただし、上記の例は投稿への承認とアクセス権の設定を示していないため、Vanillaでのソーシャルフィードの独自の例をまとめました。



展開方法



単純に展開します:



 npm install -g horizon hz init hz-app cd hz-app hz serve --dev
      
      





インストールのすべてのニュアンスは、 horizo​​n.io / installおよびhorizo​​n.io/docs/getting-startedで確認できます。



誰のため?



この製品は、JavaScriptを熟知しており、バックエンドに時間を費やしたくない人にとって間違いなく魅力的です。 Horizo​​nは、愛好家のプロトタイピングに最適です。



アプリケーションの領域について話すと、Horizo​​nはおそらく興味深いでしょう。







結論



長所





短所





バランスで



プロトタイピングとクイックスタートに適した製品です。 便利なデータベースアクセスAPI。 レコードへのアクセスを設定することができます。 HTTPSと保護、スケーリングに多くの注意が払われています。 しかし、Horizo​​nが実際にどのように機能するかは明確ではありません。成功した例はありません。 しかし、プロジェクトが多くの星と肯定的なレビューを集めることに成功したことは明らかです。 たぶん、本番で試してみるべきですか?



» Horizo​​nウェブサイト: horizo​​n.io

» Github: github.com/rethinkdb/horizo​​n

» Horizo​​n英語ビデオ: www.youtube.com/watch?v=ajb_IeXcVw4



読んでくれてありがとう!



All Articles