logologo
スタート
マニュアル
開発
プラグイン
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
スタート
マニュアル
開発
プラグイン
API
logologo
API概要

@nocobase/auth

AuthManager
Auth
BaseAuth

@nocobase/cache

CacheManager
キャッシュ

@nocobase/cli

NocoBase CLI
グローバル環境変数

@nocobase/client

アプリケーション
プラグイン

@nocobase/database

コレクション
フィールド

interfaces

BaseInterface
フィルター演算子

RelationRepository

BelongsToManyRepository
belongs-to-repository
HasManyRepository
HasOneRepository
リポジトリ

shared

create-options
destroy-options
find-one
find-options
transaction
update-options

@nocobase/data-source-manager

DataSourceManager
DataSource (抽象)
ICollectionManager
ICollection
IField
IModel
IRepository

@nocobase/flow-engine

データソースマネージャー
フローコンテキスト
FlowEngine
フローモデル
フローリソース

@nocobase/logger

ロガー

@nocobase/server

AppCommand
アプリケーション
AuditManager
コンテキスト
マイグレーション
プラグイン

@nocobase/sdk

Auth
ストレージ
Previous Pageコレクション
Next PageBaseInterface
TIP

このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください

#フィールド

#概览

コレクションのフィールド管理クラス(抽象クラス)です。すべてのフィールドタイプの基底クラスでもあり、他の任意のフィールドタイプはこのクラスを継承して実装されます。

フィールドをカスタマイズする方法については、[フィールドタイプを拡張する]をご参照ください。

#コンストラクター

通常、開発者が直接呼び出すことはありません。主に db.collection({ fields: [] }) メソッドを介してプロキシとして呼び出されます。

フィールドを拡張する際は、主に Field 抽象クラスを継承し、それを Database インスタンスに登録することで実装されます。

シグネチャ

  • constructor(options: FieldOptions, context: FieldContext)

パラメータ

パラメータ名型デフォルト値説明
optionsFieldOptions-フィールド設定オブジェクト
options.namestring-フィールド名
options.typestring-フィールドタイプ。db に登録されているフィールドタイプ名に対応します。
contextFieldContext-フィールドコンテキストオブジェクト
context.databaseDatabase-データベースインスタンス
context.collectionCollection-コレクションインスタンス

#インスタンスメンバー

#name

フィールド名。

#type

フィールドタイプ。

#dataType

フィールドのデータベース保存タイプ。

#options

フィールドの初期化設定パラメータ。

#context

フィールドコンテキストオブジェクト。

#設定メソッド

#on()

コレクションイベントに基づくショートカット定義方法です。これは db.on(this.collection.name + '.' + eventName, listener) と同等です。

継承時にこのメソッドをオーバーライドする必要は通常ありません。

シグネチャ

  • on(eventName: string, listener: (...args: any[]) => void)

パラメータ

パラメータ名型デフォルト値説明
eventNamestring-イベント名
listener(...args: any[]) => void-イベントリスナー

#off()

コレクションイベントに基づくショートカット削除方法です。これは db.off(this.collection.name + '.' + eventName, listener) と同等です。

継承時にこのメソッドをオーバーライドする必要は通常ありません。

シグネチャ

  • off(eventName: string, listener: (...args: any[]) => void)

パラメータ

パラメータ名型デフォルト値説明
eventNamestring-イベント名
listener(...args: any[]) => void-イベントリスナー

#bind()

フィールドがコレクションに追加されたときに実行される内容です。通常、コレクションイベントリスナーの追加やその他の処理に使用されます。

継承時には、対応する super.bind() メソッドを最初に呼び出す必要があります。

シグネチャ

  • bind()

#unbind()

フィールドがコレクションから削除されたときに実行される内容です。通常、コレクションイベントリスナーの削除やその他の処理に使用されます。

継承時には、対応する super.unbind() メソッドを最初に呼び出す必要があります。

シグネチャ

  • unbind()

#get()

フィールドの設定項目の値を取得します。

シグネチャ

  • get(key: string): any

パラメータ

パラメータ名型デフォルト値説明
keystring-設定項目名

例

const field = db.collection('users').getField('name');

// フィールド名設定項目の値を取得します('name' を返します)
console.log(field.get('name'));

#merge()

フィールドの設定項目の値をマージします。

シグネチャ

  • merge(options: { [key: string]: any }): void

パラメータ

パラメータ名型デフォルト値説明
options{ [key: string]: any }-マージする設定項目オブジェクト

例

const field = db.collection('users').getField('name');

field.merge({
  // インデックス設定を追加します
  index: true,
});

#remove()

コレクションからフィールドを削除します(メモリからのみ削除)。

例

const books = db.getCollections('books');

books.getField('isbn').remove();

// データベースから実際に削除
await books.sync();

#データベースメソッド

#removeFromDb()

データベースからフィールドを削除します。

シグネチャ

  • removeFromDb(options?: Transactionable): Promise<void>

パラメータ

パラメータ名型デフォルト値説明
options.transaction?Transaction-トランザクションインスタンス

#existsInDb()

フィールドがデータベースに存在するかどうかを判断します。

シグネチャ

  • existsInDb(options?: Transactionable): Promise<boolean>

パラメータ

パラメータ名型デフォルト値説明
options.transaction?Transaction-トランザクションインスタンス

#組み込みフィールドタイプ一覧

NocoBase には、いくつかの一般的なフィールドタイプが組み込まれています。コレクションのフィールドを定義する際に、対応する type 名を使用してタイプを指定できます。フィールドタイプによってパラメータ設定が異なりますので、詳細は以下のリストをご参照ください。

以下で別途説明されているものを除き、すべてのフィールドタイプの構成項目は Sequelize にそのまま渡されます。そのため、Sequelize がサポートするすべてのフィールド構成項目(例: allowNull、defaultValue など)をここで使用できます。

また、サーバー側のフィールドタイプは主にデータベースストレージと一部のアルゴリズムの問題を解決するものであり、フロントエンドのフィールド表示タイプや使用されるコンポーネントとは基本的に関係ありません。フロントエンドのフィールドタイプについては、チュートリアルの該当する説明をご参照ください。

#'boolean'

真偽値タイプ。

例

db.collection({
  name: 'books',
  fields: [
    {
      type: 'boolean',
      name: 'published',
    },
  ],
});

#'integer'

整数型(32ビット)。

例

db.collection({
  name: 'books',
  fields: [
    {
      type: 'integer',
      name: 'pages',
    },
  ],
});

#'bigInt'

長整数型(64ビット)。

例

db.collection({
  name: 'books',
  fields: [
    {
      type: 'bigInt',
      name: 'words',
    },
  ],
});

#'double'

倍精度浮動小数点型(64ビット)。

例

db.collection({
  name: 'books',
  fields: [
    {
      type: 'double',
      name: 'price',
    },
  ],
});

#'real'

実数型(PostgreSQLのみ)。

#'decimal'

10進数型。

#'string'

文字列型。ほとんどのデータベースの VARCHAR 型に相当します。

例

db.collection({
  name: 'books',
  fields: [
    {
      type: 'string',
      name: 'title',
    },
  ],
});

#'text'

テキスト型。ほとんどのデータベースの TEXT 型に相当します。

例

db.collection({
  name: 'books',
  fields: [
    {
      type: 'text',
      name: 'content',
    },
  ],
});

#'password'

パスワードタイプ(NocoBase拡張)。Node.js のネイティブ crypto パッケージの scrypt メソッドに基づいてパスワードを暗号化します。

例

db.collection({
  name: 'users',
  fields: [
    {
      type: 'password',
      name: 'password',
      length: 64, // 長さ(デフォルトは64)
      randomBytesSize: 8, // ランダムバイト長(デフォルトは8)
    },
  ],
});

パラメータ

パラメータ名型デフォルト値説明
lengthnumber64文字長
randomBytesSizenumber8ランダムバイトサイズ

#'date'

日付タイプ。

#'time'

時間タイプ。

#'array'

配列タイプ(PostgreSQLのみ)。

#'json'

JSONタイプ。

#'jsonb'

JSONBタイプ(PostgreSQLのみ。その他は 'json' タイプと互換性があります)。

#'uuid'

UUIDタイプ。

#'uid'

UIDタイプ(NocoBase拡張)。短いランダム文字列識別子タイプ。

#'formula'

数式タイプ(NocoBase拡張)。mathjs に基づく数式計算を設定できます。数式では、同じレコード内の他の列の値を参照して計算に参加させることができます。

例

db.collection({
  name: 'orders',
  fields: [
    {
      type: 'double',
      name: 'price',
    },
    {
      type: 'integer',
      name: 'quantity',
    },
    {
      type: 'formula',
      name: 'total',
      expression: 'price * quantity',
    },
  ],
});

#'radio'

ラジオタイプ(NocoBase拡張)。コレクション全体で、このフィールドの値が true となるデータは最大1行のみです。その他はすべて false または null になります。

例

システム全体で root とマークされたユーザーは1人だけです。他のユーザーの root 値が true に変更されると、それまで root が true だった他のすべてのレコードは false に変更されます。

db.collection({
  name: 'users',
  fields: [
    {
      type: 'radio',
      name: 'root',
    },
  ],
});

#'sort'

ソートタイプ(NocoBase拡張)。整数値に基づいてソートします。新しいレコードには自動的に新しいシーケンス番号が生成され、データを移動する際にはシーケンス番号が再配置されます。

コレクションが sortable オプションを定義している場合、対応するフィールドも自動的に生成されます。

例

記事は所属ユーザーに基づいてソート可能です。

db.collection({
  name: 'posts',
  fields: [
    {
      type: 'belongsTo',
      name: 'user',
    },
    {
      type: 'sort',
      name: 'priority',
      scopeKey: 'userId', // userId が同じ値でグループ化されたデータをソートします
    },
  ],
});

#'virtual'

仮想タイプ。実際にデータを保存しません。特殊な getter/setter 定義時にのみ使用されます。

#'belongsTo'

多対一関連タイプ。外部キーは自身のテーブルに保存されます。hasOne/hasMany とは対照的です。

例

どの記事も特定の作者に属します。

db.collection({
  name: 'posts',
  fields: [
    {
      type: 'belongsTo',
      name: 'author',
      target: 'users', // 設定しない場合、デフォルトで name の複数形がコレクション名として使用されます
      foreignKey: 'authorId', // 設定しない場合、デフォルトで <name> + Id の形式になります
      sourceKey: 'id', // 設定しない場合、デフォルトでターゲットコレクションの id になります
    },
  ],
});

#'hasOne'

一対一関連タイプ。外部キーは関連コレクションに保存されます。belongsTo とは対照的です。

例

すべてのユーザーはプロフィールを1つ持っています。

db.collection({
  name: 'users',
  fields: [
    {
      type: 'hasOne',
      name: 'profile',
      target: 'profiles', // 省略可能です
    },
  ],
});

#'hasMany'

一対多関連タイプ。外部キーは関連コレクションに保存されます。belongsTo とは対照的です。

例

どのユーザーも複数の記事を所有できます。

db.collection({
  name: 'users',
  fields: [
    {
      type: 'hasMany',
      name: 'posts',
      foreignKey: 'authorId',
      sourceKey: 'id',
    },
  ],
});

#'belongsToMany'

多対多関連タイプ。中間テーブルを使用して両側の外部キーを保存します。既存のテーブルを中間テーブルとして指定しない場合、中間テーブルが自動的に作成されます。

例

どの記事にも複数のタグを付けられ、どのタグも複数の記事に追加できます。

db.collection({
  name: 'posts',
  fields: [
    {
      type: 'belongsToMany',
      name: 'tags',
      target: 'tags', // 同名の場合は省略可能です
      through: 'postsTags', // 中間テーブルを設定しない場合、自動的に生成されます
      foreignKey: 'postId', // 中間テーブルにおける自身のテーブルの外部キー
      sourceKey: 'id', // 自身のテーブルの主キー
      otherKey: 'tagId', // 中間テーブルにおける関連テーブルの外部キー
    },
  ],
});

db.collection({
  name: 'tags',
  fields: [
    {
      type: 'belongsToMany',
      name: 'posts',
      through: 'postsTags', // 同じ関係グループは同じ中間テーブルを指します
    },
  ],
});