[Keystone] 仮想フィールド

仮想フィールド

Keystone では、フィールドを持つリストという形式でデータモデルを定義することができます。ほとんどのリストには、データベースに保存されるテキストや整数などのスカラーフィールドがあります。
また、クエリ時に計算される読み取り専用のフィールドを持つと便利な場合もあります。Keystone では、仮想フィールドタイプを使用してこれを行うことができます。
仮想フィールドは、GraphQL API を拡張するための強力な手段を提供します。このガイドでは、仮想フィールドを追加するための構文を紹介し、簡単な例から複雑な例に進んでいく方法を示します。

[Keystone] テスト

テスト

Web アプリケーションを構築する際には、システムの動作をテストして予想通りに動作することを確認することが重要です。このガイドでは、@keystone-6/core/testing と Jest を使用して、GraphQL API の動作をテストするためのテストの書き方を紹介します。

[Keystone] カスタムフィールド

カスタムフィールド

Keystone は、システムを構築するために使用できるフィールドタイプのコレクションを提供しています。提供されていない必要があるフィールドタイプがある場合、または既存のフィールドタイプの専門バージョンが必要な場合は、カスタムフィールドタイプを定義することができます。
フィールドタイプには2つの部分があります。

[Keystone] ドキュメントフィールドのデモ

ドキュメントフィールドのデモ

「ドキュメントフィールドタイプ」とは、コンテンツ作成者がシステム内のコンテンツを素早く簡単に編集できる高度にカスタマイズ可能なリッチテキストエディタです。
異なる設定を試して、エディタの使用感にどのような影響を与えるかを確認できます。
Keystone アプリケーションでドキュメントフィールドを設定およびレンダリングする方法の詳細については、「ドキュメントフィールドガイド」を参照してください。

[Keystone] ドキュメントフィールドの使い方

ドキュメントフィールドの使い方

ドキュメントフィールドタイプは、システム内のコンテンツ作成者が迅速かつ簡単にコンテンツを編集できる高度にカスタマイズ可能なリッチテキストエディタです。
このエディタは Slate で構築され、コンテンツを JSON 構造化データとして保存し、以下のようなことができます。

[Keystone] フック

フック

Keystone は強力な CRUD GraphQL API を提供しており、データに対して基本的な操作を実行することができます。しかし、システムが進化するにつれて、これらの操作に加えてビジネスロジックを含める必要がある場合があります。
フックを使用して、コア操作をさまざまな方法で強化する方法を紹介します。関数のシグネチャの詳細については、Hooks API を確認してください。

[Keystone] GraphQL クエリ - フィルター

GraphQL クエリ - フィルター

Keystone は、システム内のデータをクエリするための強力な GraphQL API を提供しています。この API の中心には、クエリフィルターがあります。このガイドでは、フィルターを使用して必要なデータを取得する方法を説明します。

[Keystone] 関係性の理解

関係性の理解

Keystone において、異なるコンテンツのリスト間で作成する接続を『関係性』と呼びます。構築するものは、必要に応じて大きく異なります。このガイドでは、構造化されたコンテンツを通じてプロジェクトに価値をもたらすために、Keystone における関係性を考え、構成する方法を説明します。

[Keystone] コマンドライン

コマンドライン

Keystone のコマンドラインインターフェイス (CLI) は、Keystone プロジェクトを開発、ビルド、展開するために設計されています。
keystone コマンドを使用することで、開発プロセスを開始し、アプリケーションをビルドして本番環境で実行し、スキーマが変更されるにつれてデータベースの構造を移行する方法を制御できます。

[Keystone] ドキュメントフィールド

ドキュメントフィールド

Keystone のドキュメントフィールドを使用して、強力でカスタマイズ可能なリッチテキスト編集体験を実装する方法を学びます。

認証とセッション

auth.ts

import { createAuth } from '@keystone-6/auth';
import { statelessSessions } from '@keystone-6/core/session' ;

const { withAuth } = createAuth({
  listKey: 'User',
  identityField: 'email',
  sessionData: 'name',
  secretField: 'password',
  initFirstItem: {
    fields: ['name', 'email', 'password'],
  },
});

let sessionSecret = '-- DEV COOKIE SECRET; CHANGE ME --';
let sessionMaxAge = 60 * 60 * 24 * 30; // 30 days

const session = statelessSessions({
  maxAge: sessionMaxAge,
  secret: sessionSecret,
});

export { withAuth, session }

keystone.ts