レッドウッドとメディアライブラリを作る
16993 ワード
あなたはブログやサイトのビデオや画像コンテンツを提供する専門サイトを持っている可能性があります.あなたは自分のコンテンツのすべてを管理するために自分のメディアライブラリを作ることができますし、それがあなたのユーザーに適切に保つ.あなたが必要な正確なデータを見ることができるように、あなたのイメージやビデオを配置することができます方法は、ユーザーに影響しない方法.
このチュートリアルでは、ビデオや画像を扱うために小さなメディアライブラリを作ります.あなたはCloudinaryにビデオや画像をアップロードし、独自のライブラリに表示することができます.我々は他の場所で参照画像に使用できる独自のPostgresデータベースでその内容に参照を格納するでしょう.
まず最初にやることはCloudaryアカウントを設定することです.あなたはsign up for a free account here .
その後、すべてのユーザーのメディアコンテンツをアップロードするには、単一の場所があるでしょう.あなたのコンテンツのすべてを格納する心配する必要はありませんし、ちょうどあなたのビデオを取得し、アップロードすることができます.
今、あなたは端末に行くことができると我々は次のコマンドで私たちの新しいRedwoodアプリを作るでしょう.
オープン
閉じることができます
インサイド
今、私たちは、このプロジェクトのフロントエンドとバックエンドのためのビデオで動作するようにCRUDを生成するために私のお気に入りRedwoodコマンドを使用します.
アプリのフロントエンドで、見てください
見る
我々は、実行するつもりです
我々は実際には、データベースにビデオを追加するフォームを使用するつもりはない.私たちは、私たちがCloudinaryにビデオをアップロードした後、自動的にそれをするつもりです.まず最初に、Cloudinaryウィジェットを
これらの2つのフィールドの値を必要とし、それらをあなたのCloudaryコンソールから取得します.あなたがログインするとすぐに、クラウド名はダッシュボードにあります.
あなたはに行く必要がありますsettings page for uploads そして、新しい未署名のアップロードプリセットを作成します.あなたのアップロード設定ページはこのように見えます.
ページを少し下にスクロールすると、「アップロードプリセット」セクションが表示されます.をクリックして“アップロードプリセット”を新しい未署名プリセットを作成します.あなたはこのように見えるページに取られます、そして、あなたがする必要がある唯一のものは「符号なし」に「署名されていない」ことを変えて、その変化を保存することです.
あなたが“プリセット名をアップロード”のために見る値はあなたのために設定する必要があるものです
これらの値が適切になったので、成功したビデオアップロードのコールバックを定義する必要があります.ここでは、データベースに格納するURLを取得し、ここでGraphSQLの呼び出しを行うところです.現在フォームを削除することができます!
成功コールバックはこのようになります.それは右の上に行く
いくつかのビデオをアップロードし、あなたがすべてのビデオへの参照を持つテーブルを持っているメインのビデオページにリダイレクトされることがわかります.
今すぐ残っているすべてのライブラリ形式でこのページにビデオを表示することです!
今すぐあなたが行く必要があります
このコンポーネントはすでに取得されたすべてのビデオデータを持っているので、私たちは別の
我々は完了です!今、あなたは完全に機能するメディアライブラリを持っている.あなたがどのようにコンテンツが表示され、どのようにユーザーがどのように私たちが開始したものにもう少し想像力を追加すると対話するカスタマイズできます.この機能を
あなたは、このGithubレポで完全なコードをチェックアウトすることができます
注:それはRedwoodのようなmonoreposをサポートしていないため、コードサンドボックス内のすべてを見ることができなくなります.
あなた自身のデータベースへのメディア参照を格納することはあなたに時間をかけて変化をモニターするために柔軟性を与えることができます.また、あなたのCloudaryアカウントにアクセスしようとする人々に対するバッファーとして機能することもできます.いくつかのパフォーマンスの側面も、データベース内のメディア参照を有用にする可能性があります.
あなたの理由が何であるかに関係なく、今、あなたはすぐにレッドウッドの助けを借りて、このユースケースを処理する方法を知っている.
このチュートリアルでは、ビデオや画像を扱うために小さなメディアライブラリを作ります.あなたはCloudinaryにビデオや画像をアップロードし、独自のライブラリに表示することができます.我々は他の場所で参照画像に使用できる独自のPostgresデータベースでその内容に参照を格納するでしょう.
Cloudaryアカウントの設定
まず最初にやることはCloudaryアカウントを設定することです.あなたはsign up for a free account here .
その後、すべてのユーザーのメディアコンテンツをアップロードするには、単一の場所があるでしょう.あなたのコンテンツのすべてを格納する心配する必要はありませんし、ちょうどあなたのビデオを取得し、アップロードすることができます.
レッドウッドアプリの設定
今、あなたは端末に行くことができると我々は次のコマンドで私たちの新しいRedwoodアプリを作るでしょう.
yarn create redwood-app media-library
これが終了すると、ちょうど少し更新を必要とする完全なスタックのアプリがあるでしょう.にapi
あなたのデータベースとGraphSQLのバックエンドを処理するすべてのコードを見つけるフォルダ.にweb
あなたが反応フロントエンドのためのコードを見つけるフォルダ.レッドウッドが私たちのためにたくさんの仕事を処理するためにこれを使用するので、我々はデータベース・スキーマから始めます.モデル作成
オープン
schema.prisma
にapi > db
ディレクトリ.必ず更新してくださいprovider
to postgresql
の代わりにsqlite
Postgresデータベースを使用するので.更新する瞬間を取る.env
プロジェクトのルートでファイルします.コメントを外してくださいDATABASE_URL
値とPostgres接続文字列に更新します.このように見えるかもしれない.DATABASE_URL=postgres://postgres:admin@localhost:5432/media_library
Postgresがローカルにインストールされていない場合は、you can download it here インストールが完了したらPGadminから接続文字列を取得します.閉じることができます
.env
今、戻ってschema.prisma
なぜなら、我々のモデルを追加する必要があるからです.この例のモデルをファイルに削除し、次のものを追加できます.model Video {
id Int @id @default(autoincrement())
name String
duration Float
url String
}
model Image {
id Int @id @default(autoincrement())
name String
url String
}
データベースを設定するには、データベースのスキーマを準備します.yarn rw prisma migrate dev
これは、モデルで定義された列と制約を持つテーブルを作成します.ちょうどいくつかのデータを見て、我々はデータベースをシードします.データベースの播種
インサイド
api > db
, オープンseed.js
で、コメントアウトコードの全てを削除しますmain
関数.次のコードで独自のシードコールを追加します.await db.video.create({
data: { name: 'Beth_vid', duration: 765.34, url: 'example.com' },
})
await db.image.create({
data: { name: 'Beth_img', url: 'example.com/beth.jpg' },
})
このコマンドを実行してデータベースをシードできます.yarn rw prisma db seed
あなたの新鮮なデータを適用すると、我々はレッドウッドの最高の部分に移動することができます.フロントエンドとバックエンドを生成するためにRedwoodを使用する
今、私たちは、このプロジェクトのフロントエンドとバックエンドのためのビデオで動作するようにCRUDを生成するために私のお気に入りRedwoodコマンドを使用します.
yarn rw g scaffold video
このコマンドは、データベースにビデオレコードを追加するために必要なすべてを処理するためにフロントエンドを生成します.あなたが見るならばapi > db > src > graphql
, ビデオを処理するためのクエリと突然変異の型のすべてを含む新しいSDLファイルが表示されます.インapi > db > src > services
, あなたは新しいvideos
ディレクトリ.このフォルダには、データベース更新を処理するすべてのリゾルバがあります.また、テストすることができますを追加することができます.アプリのフロントエンドで、見てください
web > src > pages
, あなたは、ビデオの多くの新しいディレクトリを見ます.これらには、CRUD機能のさまざまな側面を示すページが含まれます.見る
web > src > components
そして、あなたはビデオのより多くのディレクトリを見ます.これらのディレクトリには、フロントエンドのデータを処理するファイルと、データベースにビデオを追加するために使用できるフォームが含まれます.我々は、実行するつもりです
scaffold
コマンドを1回以上の画像のすべてのファイルを生成する.yarn rw g scaffold image
これは、私たちがCloudaryアップロード・ウィジェットで働き始める必要があるすべてです.Cloudaryアップロード装置を加えること
我々は実際には、データベースにビデオを追加するフォームを使用するつもりはない.私たちは、私たちがCloudinaryにビデオをアップロードした後、自動的にそれをするつもりです.まず最初に、Cloudinaryウィジェットを
NewVideo
コンポーネント.このウィジェットを追加するためにパッケージを使うことができますweb
ディレクトリ.yarn add react-cloudinary-upload-widget
レッツゴートゥweb > src > components > NewVideo
ファイルを編集します.閉じるこの動画はお気に入りから削除されています.他のインポートと一緒に必要なアップロードウィジェットコンポーネントのインポートを追加します.import { WidgetLoader, Widget } from 'react-cloudinary-upload-widget'
次に、アップローダーウィジェットコンポーネントを追加します.上のコードでVideoForm
, このコードを追加します.<WidgetLoader />
<Widget
sources={['local', 'camera']}
cloudName={process.env.CLOUD_NAME}
uploadPreset={process.env.UPLOAD_PRESET}
buttonText={'Open'}
style={{
color: 'white',
border: 'none',
width: '120px',
backgroundColor: 'green',
borderRadius: '4px',
height: '25px',
}}
folder={'test0'}
onSuccess={successCallBack}
/>
中には、これらの小道具のそれぞれのウィジェットのためのものをチェックアウトすることができますREADME in the repo , 我々が強調する必要があるいくつかがあります.The CLOUD_NAME
and UPLOAD_PRESET
あなたの中で定義する必要があります.env
.アップロードを設定するには
これらの2つのフィールドの値を必要とし、それらをあなたのCloudaryコンソールから取得します.あなたがログインするとすぐに、クラウド名はダッシュボードにあります.
あなたはに行く必要がありますsettings page for uploads そして、新しい未署名のアップロードプリセットを作成します.あなたのアップロード設定ページはこのように見えます.
ページを少し下にスクロールすると、「アップロードプリセット」セクションが表示されます.をクリックして“アップロードプリセット”を新しい未署名プリセットを作成します.あなたはこのように見えるページに取られます、そして、あなたがする必要がある唯一のものは「符号なし」に「署名されていない」ことを変えて、その変化を保存することです.
あなたが“プリセット名をアップロード”のために見る値はあなたのために設定する必要があるものです
UPLOAD_PRESET
に.env
. これら二つの値で.env
これに似ているはずです.CLOUD_NAME=test0
UPLOAD_PRESET=rftg435ebtre4
成功コールバックの作成
これらの値が適切になったので、成功したビデオアップロードのコールバックを定義する必要があります.ここでは、データベースに格納するURLを取得し、ここでGraphSQLの呼び出しを行うところです.現在フォームを削除することができます!
成功コールバックはこのようになります.それは右の上に行く
return
文.const successCallBack = (results) => {
const videoInfo = results.info
const input = {
name: videoInfo.original_filename,
duration: videoInfo.duration,
url: videoInfo.url,
}
createVideo({ variables: { input } })
}
ときにアプリケーションを実行するyarn rw dev
そして、http://localhost:8910/videos/new
ブラウザで「開く」というフォームの上に新しいボタンが表示されます.これはCloudaryアップロードウィジェットを開きます.いくつかのビデオをアップロードし、あなたがすべてのビデオへの参照を持つテーブルを持っているメインのビデオページにリダイレクトされることがわかります.
今すぐ残っているすべてのライブラリ形式でこのページにビデオを表示することです!
メディアを示す
今すぐあなたが行く必要があります
web > src > components > Videos
オープンVideo.js
. これは、我々が我々のビデオ情報でリストしたテーブルがあるファイルです.我々はテーブルを維持し、その上にビデオを追加するつもりです.このコンポーネントはすでに取得されたすべてのビデオデータを持っているので、私たちは別の
.map
ビデオを介して、新しい要素を作成します.テーブル要素の右側にこのコードを追加します.<div
style={{
display: 'flex',
flexWrap: 'wrap',
justifyContent: 'space-evenly',
marginBottom: '24px',
}}
>
{videos.map((video) => (
<video width="320" height="240" controls>
<source src={video.url} type="video/mp4" />
Your browser does not support the video tag.
</video>
))}
</div>
あなたのページを再ロードするならば、あなたはこれに類似した何かを見るべきです、しかし、あなたのビデオで.我々は完了です!今、あなたは完全に機能するメディアライブラリを持っている.あなたがどのようにコンテンツが表示され、どのようにユーザーがどのように私たちが開始したものにもう少し想像力を追加すると対話するカスタマイズできます.この機能を
Image
我々がカバーしなかった構成要素.(私はこのガイドに入れたのです.)完成コード
あなたは、このGithubレポで完全なコードをチェックアウトすることができます
media-library
ディレクトリ.または、フロントエンドをチェックアウトすることができますCode Sandbox .注:それはRedwoodのようなmonoreposをサポートしていないため、コードサンドボックス内のすべてを見ることができなくなります.
結論
あなた自身のデータベースへのメディア参照を格納することはあなたに時間をかけて変化をモニターするために柔軟性を与えることができます.また、あなたのCloudaryアカウントにアクセスしようとする人々に対するバッファーとして機能することもできます.いくつかのパフォーマンスの側面も、データベース内のメディア参照を有用にする可能性があります.
あなたの理由が何であるかに関係なく、今、あなたはすぐにレッドウッドの助けを借りて、このユースケースを処理する方法を知っている.
Reference
この問題について(レッドウッドとメディアライブラリを作る), 我々は、より多くの情報をここで見つけました https://dev.to/flippedcoding/making-a-media-library-with-redwood-2do7テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol