Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9309

Keystonejs Tutorials #3/Seeding data

$
0
0

次ページ https://qiita.com/bontensuzuki/items/7cd598a7075f6c970f14

Seeding data

Keystonejsのtutorialsから学んでいきます。(ほとんど機械翻訳です)
https://www.keystonejs.com/tutorials/initial-data

このガイドでは、createItemsメソッドを使用してユーザーリストを作成し、それに初期データを追加する方法を示します。このプロセスはSeedingとも呼ばれます。

注:前の章では、コードは個別のファイルに分割されましたが、実際のコードベースではこれが推奨されますが、この部分では、明確にするためにすべてが1つのファイルに入れられています。

リスト設定

パッケージをインストールする

この章では、前の章とは異なるユーザースキーマを使用し、Todoリストの代わりに投稿リストを使用します。新しいプロジェクトから始めて、空のデータベースから始める(前の章のデータを削除する)のが最善です。また、次のパッケージがすべてインストールされていることを確認してください。

mkdirnew-project3cdnew-project3yarninityarnadd@keystonejs/keystone
yarnadd@keystonejs/adapter-mongoose
yarnadd@keystonejs/app-graphql
yarnadd@keystonejs/fields
yarnadd@keystonejs/app-admin-ui
yarnadd@keystonejs/auth-password

準備

まず、ユーザーリストを作成し、PasswordAuthStrategyを追加します。
index.jsのコード:

const{Keystone}=require('@keystonejs/keystone');const{PasswordAuthStrategy}=require('@keystonejs/auth-password');const{Text,Checkbox,Password}=require('@keystonejs/fields');const{GraphQLApp}=require('@keystonejs/app-graphql');const{AdminUIApp}=require('@keystonejs/app-admin-ui');const{MongooseAdapter}=require('@keystonejs/adapter-mongoose');constkeystone=newKeystone({name:'example-project',adapter:newMongooseAdapter(),});keystone.createList('User',{fields:{name:{type:Text},email:{type:Text,isUnique:true,},isAdmin:{type:Checkbox},password:{type:Password,},},});constauthStrategy=keystone.createAuthStrategy({type:PasswordAuthStrategy,list:'User',});module.exports={keystone,apps:[newGraphQLApp(),newAdminUIApp({enableDefaultRoute:true,authStrategy})],};

ヒント:Keystone CLIを実行してkeystone-appを作成し、「スターター(ユーザー+認証)」を選択すると、同様の設定を行うことができます。このスタータープロジェクトには、ユーザーリスト、PasswordAuthStrategy、および構成済みのデータベースのシードがあります。とりあえず、手動で進めます。

メンバー登録

http://localhost:3000/admin/api

mutation{createUser(data:{name:"Mike",email:"test@test.test",password:"test1234",isAdmin:true}){name}}

メンバーを登録できたか確認してみましょう

query{allUsers{id,name}}

出力

{"data":{"allUsers":[{"id":"5eae81ad78af33930bac2700","name":"Mike"}]}}

adminUIで確認
Keystone Admin UI: http://localhost:3000/admin

スクリーンショット 2020-05-03 17.44.02.png

スクリーンショット 2020-05-03 17.42.43.png

登録が確認できました

アイテムを作成する

createItemsメソッドには、キーがリストキーであり、値が挿入するアイテムの配列であるオブジェクトが必要です。例えば:

keystone.createItems({User:[{name:'John Duck',email:'john@duck.com',password:'dolphins'},{name:'Barry',email:'bartduisters@bartduisters.com',password:'dolphins'},],});

注:データの形式は、keystone.createList()への呼び出しでのスキーマ設定と一致する必要があります。スキーマの例として、電子メールフィールドにはisUnique:trueが含まれているため、上記のコードでは、生成する必要がある各ユーザーに対して同じ電子メールを使用することはできません。

データベース接続時にデータをシードする方法の例:

constkeystone=newKeystone({name:'New Project',adapter:newMongooseAdapter(),onConnect:asynckeystone=>{awaitkeystone.createItems({User:[{name:'John Duck',email:'john@duck.com',password:'dolphins'},{name:'Barry',email:'bartduisters@bartduisters.com',password:'dolphins'},],});},});

アプリケーションを起動し、管理UIにアクセスします。起動時に2人のユーザーが利用できます。

注:この例では、スタートアップごとに同じ2人のユーザーが生成されます。メールは一意である必要があるため、重複したエラーが表示されます。これを回避するには、Keystoneを開始する前にデータベースをクリアします。

次ページ https://qiita.com/bontensuzuki/items/7cd598a7075f6c970f14


Viewing all articles
Browse latest Browse all 9309

Trending Articles