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 Overview

@nocobase/auth

AuthManager
Auth
BaseAuth

@nocobase/cache

CacheManager
แคช

@nocobase/cli

NocoBase CLI
ตัวแปรสภาพแวดล้อมส่วนกลาง

@nocobase/client

แอปพลิเคชัน
ปลั๊กอิน

@nocobase/database

คอลเลกชัน
ฟิลด์

interfaces

BaseInterface
ตัวดำเนินการ Filter

RelationRepository

BelongsToManyRepository
belongs-to-repository
HasManyRepository
HasOneRepository
รีโพสิทอรี

shared

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

@nocobase/data-source-manager

DataSourceManager
แหล่งข้อมูล (abstract)
ICollectionManager
ICollection
IField
IModel
IRepository

@nocobase/flow-engine

ตัวจัดการแหล่งข้อมูล
โฟลว์บริบท
FlowEngine
FlowModel
ทรัพยากรเวิร์กโฟลว์

@nocobase/logger

Logger

@nocobase/server

AppCommand
แอปพลิเคชัน
AuditManager
บริบท
การไมเกรต
ปลั๊กอิน

@nocobase/sdk

Auth
สตอเรจ
Previous PageBaseInterface
Next PageRelationRepository
TIP

เอกสารนี้แปลโดย AI หากมีข้อมูลที่ไม่ถูกต้อง โปรดดูเวอร์ชันภาษาอังกฤษ

#ตัวดำเนินการ Filter

ใช้ในพารามิเตอร์ filter ของ API ต่างๆ เช่น find, findOne, findAndCount, count ของ Repository ครับ/ค่ะ:

const repository = db.getRepository('books');

repository.find({
  filter: {
    title: {
      $eq: '春秋',
    },
  },
});

เพื่อรองรับการแปลงเป็น JSON (JSON serialization) ใน NocoBase เราจะระบุตัวดำเนินการ Query ด้วยสตริงที่มีเครื่องหมาย $ นำหน้าครับ/ค่ะ

นอกจากนี้ NocoBase ยังมี API สำหรับขยายตัวดำเนินการ (operators) เพิ่มเติมด้วยนะครับ/คะ สามารถดูรายละเอียดได้ที่ db.registerOperators() ครับ/ค่ะ

#ตัวดำเนินการทั่วไป

#$eq

ใช้ตรวจสอบว่าค่าของฟิลด์เท่ากับค่าที่ระบุหรือไม่ครับ/ค่ะ เทียบเท่ากับ = ใน SQL ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $eq: '春秋',
    },
  },
});

เทียบเท่ากับ title: '春秋' ครับ/ค่ะ

#$ne

ใช้ตรวจสอบว่าค่าของฟิลด์ไม่เท่ากับค่าที่ระบุหรือไม่ครับ/ค่ะ เทียบเท่ากับ != ใน SQL ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $ne: '春秋',
    },
  },
});

#$is

ใช้ตรวจสอบว่าค่าของฟิลด์เป็นค่าที่ระบุหรือไม่ครับ/ค่ะ เทียบเท่ากับ IS ใน SQL ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $is: null,
    },
  },
});

#$not

ใช้ตรวจสอบว่าค่าของฟิลด์ไม่เป็นค่าที่ระบุหรือไม่ครับ/ค่ะ เทียบเท่ากับ IS NOT ใน SQL ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $not: null,
    },
  },
});

#$col

ใช้ตรวจสอบว่าค่าของฟิลด์เท่ากับค่าของฟิลด์อื่นหรือไม่ครับ/ค่ะ เทียบเท่ากับ = ใน SQL ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $col: 'name',
    },
  },
});

#$in

ใช้ตรวจสอบว่าค่าของฟิลด์อยู่ในอาร์เรย์ที่ระบุหรือไม่ครับ/ค่ะ เทียบเท่ากับ IN ใน SQL ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $in: ['春秋', '战国'],
    },
  },
});

#$notIn

ใช้ตรวจสอบว่าค่าของฟิลด์ไม่อยู่ในอาร์เรย์ที่ระบุหรือไม่ครับ/ค่ะ เทียบเท่ากับ NOT IN ใน SQL ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $notIn: ['春秋', '战国'],
    },
  },
});

#$empty

ใช้ตรวจสอบว่าฟิลด์ทั่วไปว่างเปล่าหรือไม่ครับ/ค่ะ หากเป็นฟิลด์ประเภทสตริง จะตรวจสอบว่าเป็นสตริงว่างเปล่าหรือไม่ และหากเป็นฟิลด์ประเภทอาร์เรย์ จะตรวจสอบว่าเป็นอาร์เรย์ว่างเปล่าหรือไม่ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $empty: true,
    },
  },
});

#$notEmpty

ใช้ตรวจสอบว่าฟิลด์ทั่วไปไม่ว่างเปล่าหรือไม่ครับ/ค่ะ หากเป็นฟิลด์ประเภทสตริง จะตรวจสอบว่าไม่เป็นสตริงว่างเปล่าหรือไม่ และหากเป็นฟิลด์ประเภทอาร์เรย์ จะตรวจสอบว่าไม่เป็นอาร์เรย์ว่างเปล่าหรือไม่ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $notEmpty: true,
    },
  },
});

#ตัวดำเนินการเชิงตรรกะ

#$and

ตัวดำเนินการ AND เชิงตรรกะครับ/ค่ะ เทียบเท่ากับ AND ใน SQL ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    $and: [{ title: '诗经' }, { isbn: '1234567890' }],
  },
});

#$or

ตัวดำเนินการ OR เชิงตรรกะครับ/ค่ะ เทียบเท่ากับ OR ใน SQL ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    $or: [{ title: '诗经' }, { publishedAt: { $lt: '0000-00-00T00:00:00Z' } }],
  },
});

#ตัวดำเนินการสำหรับฟิลด์ประเภท Boolean

ใช้สำหรับฟิลด์ประเภท Boolean ที่มี type: 'boolean' ครับ/ค่ะ

#$isFalsy

ใช้ตรวจสอบว่าค่าของฟิลด์ประเภท Boolean เป็นค่าที่เป็นเท็จ (falsy) หรือไม่ครับ/ค่ะ ค่าฟิลด์ที่เป็น false, 0 และ NULL จะถูกพิจารณาว่าเป็น $isFalsy: true ทั้งหมดครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    isPublished: {
      $isFalsy: true,
    },
  },
});

#$isTruly

ใช้ตรวจสอบว่าค่าของฟิลด์ประเภท Boolean เป็นค่าที่เป็นจริง (truthy) หรือไม่ครับ/ค่ะ ค่าฟิลด์ที่เป็น true และ 1 จะถูกพิจารณาว่าเป็น $isTruly: true ทั้งหมดครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    isPublished: {
      $isTruly: true,
    },
  },
});

#ตัวดำเนินการสำหรับฟิลด์ประเภทตัวเลข

ใช้สำหรับฟิลด์ประเภทตัวเลข ซึ่งรวมถึง:

  • type: 'integer'
  • type: 'float'
  • type: 'double'
  • type: 'real'
  • type: 'decimal'

#$gt

ใช้ตรวจสอบว่าค่าของฟิลด์มากกว่าค่าที่ระบุหรือไม่ครับ/ค่ะ เทียบเท่ากับ > ใน SQL ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    price: {
      $gt: 100,
    },
  },
});

#$gte

ใช้ตรวจสอบว่าค่าของฟิลด์มากกว่าหรือเท่ากับค่าที่ระบุหรือไม่ครับ/ค่ะ เทียบเท่ากับ >= ใน SQL ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    price: {
      $gte: 100,
    },
  },
});

#$lt

ใช้ตรวจสอบว่าค่าของฟิลด์น้อยกว่าค่าที่ระบุหรือไม่ครับ/ค่ะ เทียบเท่ากับ < ใน SQL ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    price: {
      $lt: 100,
    },
  },
});

#$lte

ใช้ตรวจสอบว่าค่าของฟิลด์น้อยกว่าหรือเท่ากับค่าที่ระบุหรือไม่ครับ/ค่ะ เทียบเท่ากับ <= ใน SQL ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    price: {
      $lte: 100,
    },
  },
});

#$between

ใช้ตรวจสอบว่าค่าของฟิลด์อยู่ระหว่างค่าสองค่าที่ระบุหรือไม่ครับ/ค่ะ เทียบเท่ากับ BETWEEN ใน SQL ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    price: {
      $between: [100, 200],
    },
  },
});

#$notBetween

ใช้ตรวจสอบว่าค่าของฟิลด์ไม่อยู่ระหว่างค่าสองค่าที่ระบุหรือไม่ครับ/ค่ะ เทียบเท่ากับ NOT BETWEEN ใน SQL ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    price: {
      $notBetween: [100, 200],
    },
  },
});

#ตัวดำเนินการสำหรับฟิลด์ประเภทสตริง

ใช้สำหรับฟิลด์ประเภทสตริง ซึ่งรวมถึง string ครับ/ค่ะ

#$includes

ใช้ตรวจสอบว่าฟิลด์สตริงมีสตริงย่อยที่ระบุอยู่หรือไม่ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $includes: '三字经',
    },
  },
});

#$notIncludes

ใช้ตรวจสอบว่าฟิลด์สตริงไม่มีสตริงย่อยที่ระบุอยู่หรือไม่ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $notIncludes: '三字经',
    },
  },
});

#$startsWith

ใช้ตรวจสอบว่าฟิลด์สตริงขึ้นต้นด้วยสตริงย่อยที่ระบุหรือไม่ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $startsWith: '三字经',
    },
  },
});

#$notStatsWith

ใช้ตรวจสอบว่าฟิลด์สตริงไม่ได้ขึ้นต้นด้วยสตริงย่อยที่ระบุหรือไม่ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $notStatsWith: '三字经',
    },
  },
});

#$endsWith

ใช้ตรวจสอบว่าฟิลด์สตริงลงท้ายด้วยสตริงย่อยที่ระบุหรือไม่ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $endsWith: '三字经',
    },
  },
});

#$notEndsWith

ใช้ตรวจสอบว่าฟิลด์สตริงไม่ได้ลงท้ายด้วยสตริงย่อยที่ระบุหรือไม่ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $notEndsWith: '三字经',
    },
  },
});

#$like

ใช้ตรวจสอบว่าค่าของฟิลด์มีสตริงที่ระบุอยู่หรือไม่ครับ/ค่ะ เทียบเท่ากับ LIKE ใน SQL ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $like: '计算机',
    },
  },
});

#$notLike

ใช้ตรวจสอบว่าค่าของฟิลด์ไม่มีสตริงที่ระบุอยู่หรือไม่ครับ/ค่ะ เทียบเท่ากับ NOT LIKE ใน SQL ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $notLike: '计算机',
    },
  },
});

#$iLike

ใช้ตรวจสอบว่าค่าของฟิลด์มีสตริงที่ระบุอยู่หรือไม่ โดยไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่ครับ/ค่ะ เทียบเท่ากับ ILIKE ใน SQL (ใช้ได้เฉพาะ PostgreSQL) ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $iLike: 'Computer',
    },
  },
});

#$notILike

ใช้ตรวจสอบว่าค่าของฟิลด์ไม่มีสตริงที่ระบุอยู่หรือไม่ โดยไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่ครับ/ค่ะ เทียบเท่ากับ NOT ILIKE ใน SQL (ใช้ได้เฉพาะ PostgreSQL) ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $notILike: 'Computer',
    },
  },
});

#$regexp

ใช้ตรวจสอบว่าค่าของฟิลด์ตรงกับนิพจน์ทั่วไป (regular expression) ที่ระบุหรือไม่ครับ/ค่ะ เทียบเท่ากับ REGEXP ใน SQL (ใช้ได้เฉพาะ PostgreSQL) ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $regexp: '^计算机',
    },
  },
});

#$notRegexp

ใช้ตรวจสอบว่าค่าของฟิลด์ไม่ตรงกับนิพจน์ทั่วไปที่ระบุหรือไม่ครับ/ค่ะ เทียบเท่ากับ NOT REGEXP ใน SQL (ใช้ได้เฉพาะ PostgreSQL) ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $notRegexp: '^计算机',
    },
  },
});

#$iRegexp

ใช้ตรวจสอบว่าค่าของฟิลด์ตรงกับนิพจน์ทั่วไปที่ระบุหรือไม่ โดยไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่ครับ/ค่ะ เทียบเท่ากับ ~* ใน SQL (ใช้ได้เฉพาะ PostgreSQL) ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $iRegexp: '^COMPUTER',
    },
  },
});

#$notIRegexp

ใช้ตรวจสอบว่าค่าของฟิลด์ไม่ตรงกับนิพจน์ทั่วไปที่ระบุหรือไม่ โดยไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่ครับ/ค่ะ เทียบเท่ากับ !~* ใน SQL (ใช้ได้เฉพาะ PostgreSQL) ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    title: {
      $notIRegexp: '^COMPUTER',
    },
  },
});

#ตัวดำเนินการสำหรับฟิลด์ประเภทวันที่

ใช้สำหรับฟิลด์ประเภทวันที่ ที่มี type: 'date' ครับ/ค่ะ

#$dateOn

ใช้ตรวจสอบว่าฟิลด์วันที่ตรงกับวันใดวันหนึ่งที่ระบุหรือไม่ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    createdAt: {
      $dateOn: '2021-01-01',
    },
  },
});

#$dateNotOn

ใช้ตรวจสอบว่าฟิลด์วันที่ไม่ตรงกับวันใดวันหนึ่งที่ระบุหรือไม่ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    createdAt: {
      $dateNotOn: '2021-01-01',
    },
  },
});

#$dateBefore

ใช้ตรวจสอบว่าฟิลด์วันที่อยู่ก่อนค่าที่ระบุหรือไม่ครับ/ค่ะ เทียบเท่ากับการน้อยกว่าค่าวันที่ที่ให้มาครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    createdAt: {
      $dateBefore: '2021-01-01T00:00:00.000Z',
    },
  },
});

#$dateNotBefore

ใช้ตรวจสอบว่าฟิลด์วันที่ไม่ได้อยู่ก่อนค่าที่ระบุหรือไม่ครับ/ค่ะ เทียบเท่ากับการมากกว่าหรือเท่ากับค่าวันที่ที่ให้มาครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    createdAt: {
      $dateNotBefore: '2021-01-01T00:00:00.000Z',
    },
  },
});

#$dateAfter

ใช้ตรวจสอบว่าฟิลด์วันที่อยู่หลังค่าที่ระบุหรือไม่ครับ/ค่ะ เทียบเท่ากับการมากกว่าค่าวันที่ที่ให้มาครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    createdAt: {
      $dateAfter: '2021-01-01T00:00:00.000Z',
    },
  },
});

#$dateNotAfter

ใช้ตรวจสอบว่าฟิลด์วันที่ไม่ได้อยู่หลังค่าที่ระบุหรือไม่ครับ/ค่ะ เทียบเท่ากับการน้อยกว่าหรือเท่ากับค่าวันที่ที่ให้มาครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    createdAt: {
      $dateNotAfter: '2021-01-01T00:00:00.000Z',
    },
  },
});

#ตัวดำเนินการสำหรับฟิลด์ประเภทอาร์เรย์

ใช้สำหรับฟิลด์ประเภทอาร์เรย์ ที่มี type: 'array' ครับ/ค่ะ

#$match

ใช้ตรวจสอบว่าค่าของฟิลด์อาร์เรย์ตรงกับค่าในอาร์เรย์ที่ระบุหรือไม่ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    tags: {
      $match: ['文学', '历史'],
    },
  },
});

#$notMatch

ใช้ตรวจสอบว่าค่าของฟิลด์อาร์เรย์ไม่ตรงกับค่าในอาร์เรย์ที่ระบุหรือไม่ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    tags: {
      $notMatch: ['文学', '历史'],
    },
  },
});

#$anyOf

ใช้ตรวจสอบว่าค่าของฟิลด์อาร์เรย์มีค่าใดค่าหนึ่งในอาร์เรย์ที่ระบุอยู่หรือไม่ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    tags: {
      $anyOf: ['文学', '历史'],
    },
  },
});

#$noneOf

ใช้ตรวจสอบว่าค่าของฟิลด์อาร์เรย์ไม่มีค่าใดๆ ในอาร์เรย์ที่ระบุอยู่เลยหรือไม่ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    tags: {
      $noneOf: ['文学', '历史'],
    },
  },
});

#$arrayEmpty

ใช้ตรวจสอบว่าฟิลด์อาร์เรย์ว่างเปล่าหรือไม่ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    tags: {
      $arrayEmpty: true,
    },
  },
});

#$arrayNotEmpty

ใช้ตรวจสอบว่าฟิลด์อาร์เรย์ไม่ว่างเปล่าหรือไม่ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    tags: {
      $arrayNotEmpty: true,
    },
  },
});

#ตัวดำเนินการสำหรับฟิลด์ประเภทความสัมพันธ์

ใช้สำหรับตรวจสอบว่ามีความสัมพันธ์อยู่หรือไม่ โดยประเภทฟิลด์ที่เกี่ยวข้องได้แก่:

  • type: 'hasOne'
  • type: 'hasMany'
  • type: 'belongsTo'
  • type: 'belongsToMany'

#$exists

มีข้อมูลความสัมพันธ์อยู่ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    author: {
      $exists: true,
    },
  },
});

#$notExists

ไม่มีข้อมูลความสัมพันธ์อยู่ครับ/ค่ะ

ตัวอย่าง

repository.find({
  filter: {
    author: {
      $notExists: true,
    },
  },
});