Esta documentación ha sido traducida automáticamente por IA.
Clase de gestión de campos de colección (clase abstracta). Es también la clase base para todos los tipos de campo. Cualquier otro tipo de campo se implementa heredando de esta clase.
Para saber cómo personalizar campos, consulte [Extender tipos de campo]
Normalmente, los desarrolladores no lo llaman directamente. Se invoca principalmente a través del método db.collection({ fields: [] }) como punto de entrada proxy.
Al extender un campo, se implementa principalmente heredando de la clase abstracta Field y luego registrándola en la instancia de Database.
Firma
constructor(options: FieldOptions, context: FieldContext)Parámetros
| Parámetro | Tipo | Valor predeterminado | Descripción |
|---|---|---|---|
options | FieldOptions | - | Objeto de configuración del campo |
options.name | string | - | Nombre del campo |
options.type | string | - | Tipo de campo, que corresponde al nombre del tipo de campo registrado en la base de datos |
context | FieldContext | - | Objeto de contexto del campo |
context.database | Database | - | Instancia de la base de datos |
context.collection | Collection | - | Instancia de la colección |
nameNombre del campo.
typeTipo de campo.
dataTypeTipo de almacenamiento del campo en la base de datos.
optionsParámetros de configuración de inicialización del campo.
contextObjeto de contexto del campo.
on()Un método de definición abreviado basado en eventos de la colección. Equivalente a db.on(this.collection.name + '.' + eventName, listener).
Normalmente, no es necesario sobrescribir este método al heredar.
Firma
on(eventName: string, listener: (...args: any[]) => void)Parámetros
| Parámetro | Tipo | Valor predeterminado | Descripción |
|---|---|---|---|
eventName | string | - | Nombre del evento |
listener | (...args: any[]) => void | - | Escuchador de eventos |
off()Un método de eliminación abreviado basado en eventos de la colección. Equivalente a db.off(this.collection.name + '.' + eventName, listener).
Normalmente, no es necesario sobrescribir este método al heredar.
Firma
off(eventName: string, listener: (...args: any[]) => void)Parámetros
| Parámetro | Tipo | Valor predeterminado | Descripción |
|---|---|---|---|
eventName | string | - | Nombre del evento |
listener | (...args: any[]) => void | - | Escuchador de eventos |
bind()El contenido que se ejecuta cuando un campo se añade a una colección. Se utiliza normalmente para añadir escuchadores de eventos de la colección y otros procesos.
Al heredar, debe llamar primero al método super.bind() correspondiente.
Firma
bind()unbind()El contenido que se ejecuta cuando un campo se elimina de una colección. Se utiliza normalmente para eliminar escuchadores de eventos de la colección y otros procesos.
Al heredar, debe llamar primero al método super.unbind() correspondiente.
Firma
unbind()get()Obtiene el valor de un elemento de configuración de un campo.
Firma
get(key: string): anyParámetros
| Parámetro | Tipo | Valor predeterminado | Descripción |
|---|---|---|---|
key | string | - | Nombre del elemento de configuración |
Ejemplo
merge()Fusiona los valores de los elementos de configuración de un campo.
Firma
merge(options: { [key: string]: any }): voidParámetros
| Parámetro | Tipo | Valor predeterminado | Descripción |
|---|---|---|---|
options | { [key: string]: any } | - | El objeto de elementos de configuración a fusionar |
Ejemplo
remove()Elimina el campo de la colección (solo de la memoria).
Ejemplo
removeFromDb()Elimina el campo de la base de datos.
Firma
removeFromDb(options?: Transactionable): Promise<void>Parámetros
| Parámetro | Tipo | Valor predeterminado | Descripción |
|---|---|---|---|
options.transaction? | Transaction | - | Instancia de transacción |
existsInDb()Determina si el campo existe en la base de datos.
Firma
existsInDb(options?: Transactionable): Promise<boolean>Parámetros
| Parámetro | Tipo | Valor predeterminado | Descripción |
|---|---|---|---|
options.transaction? | Transaction | - | Instancia de transacción |
NocoBase incluye algunos tipos de campo de uso común. Puede usar directamente el nombre de tipo correspondiente para especificar el tipo al definir los campos de una colección. Los diferentes tipos de campo tienen configuraciones de parámetros distintas; consulte la lista a continuación para obtener más detalles.
Todos los elementos de configuración para los tipos de campo, excepto los que se presentan a continuación, se pasarán a Sequelize. Por lo tanto, todos los elementos de configuración de campo compatibles con Sequelize se pueden usar aquí (como allowNull, defaultValue, etc.).
Además, los tipos de campo del lado del servidor resuelven principalmente problemas de almacenamiento en la base de datos y algunos algoritmos, y son básicamente independientes de los tipos de visualización de campo y los componentes utilizados en el frontend. Para los tipos de campo del frontend, consulte las instrucciones correspondientes en el tutorial.
'boolean'Tipo de valor lógico (booleano).
Ejemplo
'integer'Tipo entero (32 bits).
Ejemplo
'bigInt'Tipo entero largo (64 bits).
Ejemplo
'double'Tipo de punto flotante de doble precisión (64 bits).
Ejemplo
'real'Tipo de número real (solo para PostgreSQL).
'decimal'Tipo decimal.
'string'Tipo de cadena de texto. Equivalente al tipo VARCHAR en la mayoría de las bases de datos.
Ejemplo
'text'Tipo de texto. Equivalente al tipo TEXT en la mayoría de las bases de datos.
Ejemplo
'password'Tipo de contraseña (extensión de NocoBase). Cifra contraseñas utilizando el método scrypt del paquete nativo crypto de Node.js.
Ejemplo
Parámetros
| Parámetro | Tipo | Valor predeterminado | Descripción |
|---|---|---|---|
length | number | 64 | Longitud de caracteres |
randomBytesSize | number | 8 | Tamaño de bytes aleatorios |
'date'Tipo de fecha.
'time'Tipo de hora.
'array'Tipo de array (solo para PostgreSQL).
'json'Tipo JSON.
'jsonb'Tipo JSONB (solo para PostgreSQL; otros se compatibilizarán como tipo 'json').
'uuid'Tipo UUID.
'uid'Tipo UID (extensión de NocoBase). Tipo de identificador de cadena aleatoria corta.
'formula'Tipo fórmula (extensión de NocoBase). Permite configurar cálculos de fórmulas matemáticas basados en mathjs. La fórmula puede hacer referencia a los valores de otras columnas en el mismo registro para el cálculo.
Ejemplo
'radio'Tipo radio (extensión de NocoBase). Como máximo, una fila de datos en toda la colección puede tener el valor true para este campo; todas las demás serán false o null.
Ejemplo
Solo hay un usuario marcado como 'root' en todo el sistema. Después de que el valor 'root' de cualquier otro usuario se cambie a true, todos los demás registros con 'root' en true se cambiarán a false:
'sort'Tipo de ordenación (extensión de NocoBase). Ordena basándose en números enteros, genera automáticamente un nuevo número de secuencia para los nuevos registros y reordena los números de secuencia cuando se mueven los datos.
Si una colección define la opción sortable, también se generará automáticamente un campo correspondiente.
Ejemplo
Las publicaciones se pueden ordenar según el usuario al que pertenecen:
'virtual'Tipo virtual. No almacena datos realmente, solo se utiliza para definiciones especiales de getter/setter.
'belongsTo'Tipo de asociación de muchos a uno. La clave foránea se almacena en su propia colección, a diferencia de hasOne/hasMany.
Ejemplo
Cualquier publicación pertenece a un autor:
'hasOne'Tipo de asociación de uno a uno. La clave foránea se almacena en la colección asociada, a diferencia de belongsTo.
Ejemplo
Cada usuario tiene un perfil:
'hasMany'Tipo de asociación de uno a muchos. La clave foránea se almacena en la colección asociada, a diferencia de belongsTo.
Ejemplo
Cualquier usuario puede tener múltiples publicaciones:
'belongsToMany'Tipo de asociación de muchos a muchos. Utiliza una colección intermedia para almacenar las claves foráneas de ambas partes. Si no se especifica una colección existente como intermedia, se creará automáticamente una colección intermedia.
Ejemplo
Cualquier publicación puede tener múltiples etiquetas, y cualquier etiqueta puede ser añadida a múltiples publicaciones: