Docs Menu
Docs Home
/ /
Funciones

Global Modules

Todas las funciones tienen acceso a módulos globales integrados que facilitan la transformación, codificación y procesamiento de datos. Puedes acceder a los módulos en el código fuente de tu función mediante variables globales específicas de cada módulo.

Tip

Estos módulos globales no son los mismos que los módulos de funcionalidad incorporada de Node.js. Para obtener más información sobre los módulos compatibles de Node.js, incluyendo cómo importarlos, consulta Soporte de módulos incorporados.

Module
Descripción

Métodos para leer y escribir tokens web JSON.

Métodos que implementan algoritmos criptográficos como hashes y firmas.

Métodos que convierten entre representaciones de cadenas y objetos de JSON datos.

Métodos que convierten entre representaciones de string y objetos de datos JSON extendido.

Métodos que crean objetos JSON binarios y convierten entre varios tipos de datos y codificaciones BSON.

Puede crear y leer tokens web JSON con la utils.jwt interfaz.

Método
Descripción

Genera una cadena de token web JSON codificada para un payload, signingMethod y secret determinados.

Descodifica el payload de una cadena de token web JSON.

utils.jwt.encode()

Genera una cadena de token web JSON codificada para payload en función de signingMethod y secret especificados.

utils.jwt.encode(
signingMethod: string,
payload: object,
secret: string,
customHeaderFields: object
): string
Parameter
Tipo
Descripción

signingMethod

string

El algoritmo criptográfico que se utiliza al codificar el JWT. Atlas App Services admite los siguientes métodos de firma JWT:

Método de firma
Descripción

"HS256"

HMAC usando SHA-256

"HS384"

HMAC usando SHA-384

"HS512"

HMAC usando SHA-512

"RS256"

RSASSA-PKCS1-v1_5 usando SHA-256

"RS384"

RSASSA-PKCS1-v1_5 usando SHA-384

"RS512"

RSASSA-PKCS1-v1_5 usando SHA-512

"ES256"

ECDSA utilizando P-256 y SHA-256

"ES384"

ECDSA utilizando P-384 y SHA-384

"ES512"

ECDSA utilizando P-512 y SHA-512

"PS256"

RSASSA-PSS usando SHA-256 y MGF1 con SHA-256

"PS384"

RSASSA-PSS usando SHA-384 y MGF1 con SHA-384

"PS512"

RSASSA-PSS usando SHA-512 y MGF1 con SHA-512

payload

Objeto

Un objeto JSON que especifica las reclamaciones del token y cualquier dato adicional relacionado.

secret

string

Una cadena secreta que App Services usa para firmar el token. El valor de la cadena depende del método de firma que uses:

Métodos de firma
Descripción
"HS256"
"HS384"
"HS512"

Una cadena aleatoria.

"RS256"
"RS384"
"RS512"

Una clave privada RSA-SHA en formato PKCS#8.

"PS256"
"PS384"
"PS512"

Una clave privada RSA-PSS en formato PKCS#8.

"ES256"
"ES384"
"ES512"

Una clave privada ECDSA en8 formato PKCS#.

customHeaderFields

Objeto

Un objeto JSON que especifica campos adicionales para incluir en el encabezado JOSE de JWT.

Devuelve:Una cadena de token web JSON codificada para el payload proporcionado.

Ejemplo

Considere el siguiente objeto de reclamaciones JWT:

{
"sub": "1234567890",
"name": "Joe Example",
"iat": 1565721223187
}

Podemos codificar el objeto de reclamaciones como una cadena JWT llamando a utils.jwt.encode(). La siguiente función codifica el JWT utilizando el método de firma HS512 y el secreto "SuperSecret":

exports = function() {
const signingMethod = "HS512";
const payload = {
"sub": "1234567890",
"name": "Joe Example",
"iat": 1565721223187
};
const secret = "SuperSecret";
return utils.jwt.encode(signingMethod, payload, secret);
}
"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvZSBTY2htb2UiLCJpYXQiOjE1NjU3MjEyMjMxODd9.-QL15ldu2BYuJokNWT6YRiwZQIiIpvq6Kyv-C6qslNdNiUVxo8zqLJZ1iEkNf2yZKMIrQuMCtIC1tzd2H31AxA"
utils.jwt.decode()

Decodifica el payload de la cadena de token web JSON proporcionada. El valor de key debe corresponder al valor secreto utilizado para codificar la cadena JWT.

utils.jwt.decode(
jwtString: string,
key: string,
returnHeader: boolean
): object
Parameter
Tipo
Descripción

jwtString

string

Una cadena de token web JSON que codifica un conjunto de reclamaciones firmadas con un valor secreto.

key

string

Una cadena que App Services usa para verificar la firma del token. El valor de la cadena depende del método de firma que uses:

Métodos de firma
Descripción
"HS256"
"HS384"
"HS512"

La cadena aleatoria que se utilizó para firmar el token.

"RS256"
"RS384"
"RS512"

La clave pública RSA-SHA que corresponde a la clave privada que se utilizó para firmar el token.

"PS256"
"PS384"
"PS512"

La clave pública RSA-PSS que corresponde a la clave privada que se utilizó para firmar el token.

"ES256"
"ES384"
"ES512"

La clave pública ECDSA que corresponde a la clave privada que se utilizó para firmar el token.

returnHeader

booleano

Si true, devuelve el encabezado JOSE del JWT además de la carga útil decodificada.

acceptedSigningMethods

cadena[]

Opcional. Matriz de métodos de firma aceptados. Por["PS256", "HS256"] ejemplo,. Este argumento debe incluirse para evitar vulnerabilidades de seguridad conocidas de JWT.

Devuelve:Si returnHeader es false, devuelve la carga útil EJSON decodificada.

Si returnHeader truees, devuelve un objeto que contiene el encabezado JOSE en el header campo y la carga útil EJSON decodificada en el payload campo.

{
"header": {
"<JOSE Header Field>": <JOSE Header Value>,
...
},
"payload": {
"<JWT Claim Field>": <JWT Claim Value>,
...
}
}

Ejemplo

Considere la siguiente cadena JWT firmada:

"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvZSBTY2htb2UiLCJpYXQiOjE1NjU3MjEyMjMxODd9.-QL15ldu2BYuJokNWT6YRiwZQIiIpvq6Kyv-C6qslNdNiUVxo8zqLJZ1iEkNf2yZKMIrQuMCtIC1tzd2H31AxA"

El JWT se firmó mediante el método de firma HS512 con el valor secreto "SuperSecret". Podemos decodificar el objeto de notificaciones utils.jwt.decode() del JWT. La siguiente función decodifica la cadena JWT en un objeto EJSON:

exports = function(jwtString) {
const key = "SuperSecret";
return utils.jwt.decode(jwtString, key, false, ["HS512"]);
}
{
"sub": "1234567890",
"name": "Joe Example",
"iat": { "$numberDouble": 1565721223187 }
}

Puede cifrar, descifrar, firmar y verificar datos utilizando algoritmos criptográficos con la interfaz utils.crypto.

Método
Descripción

Genera una cadena de texto cifrada a partir de una cadena de texto determinada utilizando un método de cifrado y una clave específicos.

Descifra una cadena de texto proporcionada utilizando un método de cifrado y una clave específicos.

Genera una firma criptográficamente única para un mensaje determinado utilizando una clave privada.

Verifica que una firma sea válida para un mensaje y una clave pública determinados.

Genera un valor hash para una entrada y una función hash determinadas.

utils.crypto.encrypt()

Genera una cadena de texto cifrada a partir del texto proporcionado utilizando el método de cifrado y la clave especificados.

utils.crypto.encrypt(
encryptionType: string,
message: string,
key: string
): BSON.Binary
Parameter
Tipo
Descripción

encryptionType

string

El tipo de cifrado con el que se cifrará el mensaje. Se admiten los siguientes tipos de cifrado:

  • Cifrado AES "aes"()

message

string

La cadena de texto que desea cifrar.

key

string

Una clave criptográfica utilizada para cifrar el texto. La clave que debe usar depende del método de cifrado:

Tipo de cifrado
Clave de cifrado

AES

Una cadena aleatoria de 16bytes, 24bytes o 32bytes

Devuelve:Un objeto binario BSON que contiene la cadena de texto cifrada con el tipo de cifrado y la clave especificados.

Ejemplo

Supongamos que hemos definido un valor llamado aesEncryptionKey que contiene la siguiente 32clave de cifrado AES de bytes:

"603082712271C525E087BD999A4E0738"

Con esta clave AES, podemos cifrar un mensaje en una cadena base64 utilizando la siguiente función:

exports = function() {
const message = "MongoDB is great!"
const key = context.values.get("aesEncryptionKey");
const encryptedMessage = utils.crypto.encrypt("aes", message, key);
return encryptedMessage.toBase64();
}
"WPBuIvJ6Bity43Uh822dW8QlVYVJaFUiDeUjlTiJXzptUuTYIKPlXekBQAJb"
utils.crypto.decrypt()

Descifra la cadena de texto proporcionada utilizando el tipo y la clave de cifrado especificados. Si tanto el tipo como la clave de cifrado coinciden con los utilizados para el cifrado, se devuelve el texto original sin cifrar.

utils.crypto.decrypt(
encryptionType: string,
encryptedMessage: BSON.Binary,
key: string
): BSON.Binary
Parameter
Tipo
Descripción

encryptionType

string

El tipo de cifrado utilizado para cifrar el texto proporcionado. Se admiten los siguientes tipos de cifrado:

encryptedMessage

Un binario BSON que codifica la cadena de texto encriptada que desea descifrar.

key

string

Una clave criptográfica utilizada para descifrar el texto. La clave que debe usar depende del tipo de cifrado:

Tipo de cifrado
Clave de cifrado

AES

Una cadena aleatoria de 16bytes, 24bytes o 32bytes

Devuelve:Un objeto binario BSON que contiene el mensaje descifrado.

Si el mensaje cifrado proporcionado se cifró con el método y la clave especificados, entonces el mensaje descifrado es idéntico al mensaje original.

Ejemplo

Supongamos que hemos definido un valor llamado aesEncryptionKey que contiene la siguiente 32clave de cifrado AES de bytes:

"603082712271C525E087BD999A4E0738"

Podemos usar esta clave AES para descifrar cualquier cadena base64 que haya sido cifrada con la misma clave utilizando la siguiente función:

exports = function(encryptedMessage) {
// The encrypted message must be a BSON.Binary
if(typeof encryptedMessage === "string") {
encryptedMessage = BSON.Binary.fromBase64(encryptedMessage)
}
const key = context.values.get("aesEncryptionKey");
const decryptedMessage = utils.crypto.decrypt("aes", encryptedMessage, key);
return decryptedMessage.text();
}
"MongoDB is great!"
utils.crypto.sign()

Genera una firma criptográficamente única para un mensaje mediante una clave privada. La firma se puede verificar con la clave pública correspondiente para garantizar que el firmante tenga acceso a la clave privada y que el contenido del mensaje no se haya alterado desde su firma.

utils.crypto.sign(
encryptionType: string,
message: string,
privateKey: string,
signatureScheme: string
): BSON.Binary
Parameter
Tipo
Descripción

encryptionType

string

El tipo de cifrado utilizado para generar el par de claves privada/pública. Se admiten los siguientes tipos de cifrado:

message

string

La cadena de texto que desea firmar.

privateKey

string

Una clave privada generada con el tipo de cifrado especificado.

Importante

Formato de clave

No todas las claves RSA usan el mismo formato. Los Servicios de Aplicaciones solo pueden firmar mensajes con una clave privada que cumpla con el formato estándar PKCS#.1 Las claves privadas en este formato tienen el -----BEGIN RSA PRIVATE KEY----- encabezado.

Puede utilizar el siguiente script de shell para generar un par de claves privadas/públicas RSA válido y guardar cada clave en su propio archivo de texto:

# Generate an RSA SSH key pair
# Save the key to a file called `rsa_key` when prompted
ssh-keygen -t rsa -m PEM -b 2048 -C "2048-bit RSA Key"
# Private Key
cat rsa_key > rsa.private.txt
# Public Key
ssh-keygen -f rsa_key.pub -e -m pem > rsa.public.txt

signatureScheme

string

Opcional. Por defecto: "pss"

El esquema de relleno que debe usar la firma. App Services admite la firma de mensajes con los siguientes esquemas:

Devuelve:Una firma criptográfica BSON.Binary para el mensaje firmado utilizando la clave privada especificada.

Ejemplo

Supongamos que hemos definido un valor llamado rsaPrivateKey que contiene la siguiente llave privada RSA:

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDVsEjse2qO4v3p8RM/q8Rqzloc1lee34yoYuKZ2cemuUu8Jpc7
KFO1+aJpXdbSPZNhGLdANn8f2oMIZ1R9hgEJRn/Qm/YyC4RPTGg55nzHqSlziNZJ
JAyEUyU7kx5+Kb6ktgojhk8ocZRkorM8FEylkrKzgSrfay0PcWHPsKlmeQIDAQAB
AoGAHlVK1L7kLmpMbuP4voYMeLjYE9XdVEEZf2GiFwLSE3mkJY44033y/Bb2lgxr
DScOf675fFUAEK59ATlhxfu6s6rgx+g9qQQ+mL74YZWPqiZHBPjyMRaBalDVC4QF
YJ+DopFcB8hY2ElXnbK70ALmVYNjw3RdmC97h0YfOsQcWW0CQQD18aeuPNicVnse
Ku22vvhvQYlabaQh4xdkEIxz1TthZj48f61wZwEMipYqOAc5XEtDlNnxgeipv0yF
RHstUjwXAkEA3m0Br/U/vC9evuXppWbONana08KLgfELyd3Uw9jG7VKJZTBH5mS8
7CB68aEF8egrJpo8Ss8BkWrvCxYDb4Y77wJAUlbOMZozVtvpKidrIFR9Lho91uWA
Hsw9h4W20AzibXBig7SnJ0uE4WMAdS/+0yhgFkceVCmO8E2YW8Gaj4jJjwJASxtg
AHy+ItuUEL4uIW4Pn8tVW0BMP3qX0niXyfI/ag/+2S5uePv3V3y4RzNqgH83Yved
+FziWKpVQdcTHeuj/QJBAJl1G3WFruk0llIoKKbKljaEiCm1WCTcuEPbdOtkJYvO
9ZYQg/fji70FERkq2KHtY7aLhCHzy0d4n9xgE/pjV+I=
-----END RSA PRIVATE KEY-----

Con esta clave RSA, podemos firmar un mensaje utilizando la siguiente función:

exports = function() {
const message = "MongoDB is great!"
const rsaPrivateKey = context.values.get("rsaPrivateKey");
const signature = utils.crypto.sign("rsa", message, rsaPrivateKey, "pss");
return signature.toBase64();
}
"SpfXcJwPbypArt+XuYQyuZqU52YCAY/sZj2kiuin2b6/RzyM4Ek3n3spOtqZJqxn1tfQavxIX4V+prbs74/pOaQkCLekl9Hoa1xOzSKcGoRd8U+n1+UBY3d3cyODGMpyr8Tim2HZAeLPE/D3Q36/K+jpgjvrJFXsJoAy5/PV7iEGV1fkzogmZtXWDcUUBBTTNPY4qZTzjNhL4RAFOc7Mfci+ojE/lLsNaumUVU1/Eky4vasmyjqunm+ULCcRmgWtGDMGHaQV4OXC2LMUe9GOqd3Q9ghCe0Vlhn25oTh8cXoGpd1Fr8wolNa//9dUqSM+QYDpZJXGLShX/Oa8mPwJZKDKHtqrS+2vE6S4dDWR7zKDza+DeovOeCih71QyuSYMXSz+WWGgfLzv/syhmUXP/mjqgLmJU6Kwg5htajDoylpzLC0BLGT4zDZEwBrq/AjwRs/EPjYdFgGCt1WCbbVlDyXvvH1ekDrzACzumhiMSZNNa+ZH3JmMJxTCQWDfiTeAfkauaaZHKIj2q2/QE7vuAhNcVPJ2YgpXnvnQHJpEZBc/Y3Q6JLxom6+cGC4P//9d++r2cwzXIkqD+wSGZVSVtpm5CLtWMRSK5FX2dv16bM+LE8ozoRvtMUDTrQ8SSSDGxyuYbvN9b2fYYPcWpCMchqOBXV6eZGoMldaHX3Qy5h8="
utils.crypto.verify()

Comprueba que la firma proporcionada sea válida para el mensaje y la clave pública especificados.

Si la firma es válida, garantiza que el firmante tiene acceso a la clave privada correspondiente y que el contenido del mensaje no ha sido alterado desde que fue firmado.

utils.crypto.verify(
encryptionType: string,
message: string,
publicKey: string,
signature: BSON.Binary,
signatureScheme: string
): boolean
Parameter
Tipo
Descripción

encryptionType

string

El tipo de cifrado utilizado para generar el par de claves privada/pública. Se admiten los siguientes tipos de cifrado:

message

string

La cadena de texto cuya firma desea verificar. Si la firma es válida, este es el mensaje exacto que se firmó.

publicKey

string

La clave pública cuya firma se desea verificar. Si la firma es válida, esta es la clave pública correspondiente a la clave privada utilizada para firmar el mensaje.

Importante

Formato de clave

No todas las claves RSA usan el mismo formato. App Services solo puede verificar firmas con claves RSA que cumplan con el formato estándar PKCS#.1 Las claves públicas en este formato tienen el -----BEGIN RSA PUBLIC KEY----- encabezado.

Puede utilizar el siguiente script de shell para generar un par de claves privadas/públicas RSA válido y guardar cada clave en su propio archivo de texto:

# Generate an RSA SSH key pair
# Save the key to a file called `rsa_key` when prompted
ssh-keygen -t rsa -m PEM -b 2048 -C "2048-bit RSA Key"
# Private Key
cat rsa_key > rsa.private.txt
# Public Key
ssh-keygen -f rsa_key.pub -e -m pem > rsa.public.txt

signature

La firma que desea verificar.

signatureScheme

string

Opcional. Por defecto: "pss"

El esquema de relleno que utiliza la firma. App Services admite la verificación de firmas que utilizan los siguientes esquemas:

Devuelve:Un valor booleano que, si es true, indica si la firma es válida o no para el mensaje y la clave pública proporcionados.

Ejemplo

Recibimos un mensaje con una firma en formato BSON.Binary y queremos verificar que el mensaje fue firmado con la clave privada que corresponde a la clave pública RSA del remitente:

-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBANWwSOx7ao7i/enxEz+rxGrOWhzWV57fjKhi4pnZx6a5S7wmlzsoU7X5
omld1tI9k2EYt0A2fx/agwhnVH2GAQlGf9Cb9jILhE9MaDnmfMepKXOI1kkxDIRT
JTuTHn4pvqS2CiOGTyhxlGSiszwUTKWSsrOBKt9rLQ9xYc+wqWZ5AgMBAAE=
-----END RSA PUBLIC KEY-----

Con esta clave RSA, podemos verificar un mensaje firmado con la clave privada correspondiente utilizando la siguiente función:

exports = function() {
const rsaPublicKey = context.values.get("rsaPublicKey");
const message = "MongoDB is great!"
const signature = BSON.Binary.fromBase64("SpfXcJwPbypArt+XuYQyuZqU52YCAY/sZj2kiuin2b6/RzyM4Ek3n3spOtqZJqxn1tfQavxIX4V+prbs74/pOaQkCLekl9Hoa1xOzSKcGoRd8U+n1+UBY3d3cyODGMpyr8Tim2HZAeLPE/D3Q36/K+jpgjvrJFXsJoAy5/PV7iEGV1fkzogmZtXWDcUUBBTTNPY4qZTzjNhL4RAFOc7Mfci+ojE/lLsNaumUVU1/Eky4vasmyjqunm+ULCcRmgWtGDMGHaQV4OXC2LMUe9GOqd3Q9ghCe0Vlhn25oTh8cXoGpd1Fr8wolNa//9dUqSM+QYDpZJXGLShX/Oa8mPwJZKDKHtqrS+2vE6S4dDWR7zKDza+DeovOeCih71QyuSYMXSz+WWGgfLzv/syhmUXP/mjqgLmJU6Kwg5htajDoylpzLC0BLGT4zDZEwBrq/AjwRs/EPjYdFgGCt1WCbbVlDyXvvH1ekDrzACzumhiMSZNNa+ZH3JmMJxTCQWDfiTeAfkauaaZHKIj2q2/QE7vuAhNcVPJ2YgpXnvnQHJpEZBc/Y3Q6JLxom6+cGC4P//9d++r2cwzXIkqD+wSGZVSVtpm5CLtWMRSK5FX2dv16bM+LE8ozoRvtMUDTrQ8SSSDGxyuYbvN9b2fYYPcWpCMchqOBXV6eZGoMldaHX3Qy5h8=")
const isValid = utils.crypto.verify("rsa", message, rsaPublicKey, signature, "pss");
return isValid; // true if the signature matches, else false
}
true
utils.crypto.hmac()

Genera una firma HMAC a partir de la entrada y el secreto proporcionados. Esto resulta útil al comunicarse con servicios HTTP de terceros que requieren solicitudes firmadas.

utils.crypto.hmac(
input: string,
secret: string,
hash_function: string,
output_format: string
): string
Parameter
Tipo
Descripción

input

string

La entrada para la que desea generar una firma.

secret

string

La clave secreta a utilizar al generar la firma.

hash_function

string

El nombre de la función hash que se usará al generar la firma. Se admiten las siguientes funciones: "sha1", "sha256", "sha512".

output_format

string

El formato de la firma generada. Puede ser "hex" para una cadena hexadecimal o "base64" para una cadena Base64.

Devuelve:La firma de la entrada, en el formato especificado por output_format.

Ejemplo

La siguiente función genera una firma sha256 como una cadena base 64:

exports = function() {
const signature = utils.crypto.hmac(
"hello!",
"super-secret",
"sha256",
"base64"
)
return signature
}
"SUXd6PRMaTXXgBGaGsIHzaDWgTSa6C3D44lRGrvRak0="
utils.crypto.hash()

Genera un valor hash para la entrada proporcionada utilizando la función hash especificada.

utils.crypto.hash(
hash_function: string,
input: string | BSON.Binary
): BSON.Binary
Parameter
Tipo
Descripción

hash_function

string

El nombre de la función hash. Se admiten las siguientes funciones: "sha1", "sha256", "md5".

input

cadena o BSON.Binary

Obligatorio. La entrada para la que desea generar un valor hash.

Devuelve:Un objeto BSON.Binary que codifica el valor hash de la entrada proporcionada generada por la función hash especificada.

Ejemplo

La siguiente función genera un hash de una cadena de entrada con sha256:

exports = function() {
return utils.crypto.hash(
"sha256",
"hello!"
)
}
"zgYJL7lI2f+sfRo3bkBLJrdXW8wR7gWkYV/vT+w6MIs="

El JSON módulo global proporciona métodos JSON para serializar y deserializar objetos JavaScript estándar.

Método
Descripción

Analizar una cadena JSON serializada en un objeto JavaScript.

Serializar un objeto JavaScript en una cadena JSON.

JSON.parse()

Analiza la cadena JSON proporcionada y la convierte en un objeto JavaScript.

JSON.parse(jsonString: string): object
Parameter
Tipo
Descripción

jsonString

Una representación de cadena serializada de un objeto JSON estándar.

Devuelve:Un objeto estándar de JavaScript generado a partir del string JSON suministrado.

Ejemplo

La siguiente función convierte una cadena JSON serializada en un objeto JavaScript equivalente:

exports = function() {
const jsonString = `{
"answer": 42,
"submittedAt": "2020-03-02T16:50:24.475Z"
}`;
return JSON.parse(jsonString);
}
{
"answer": 42,
"submittedAt": "2020-03-02T16:50:24.475Z"
}
JSON.stringify()

Serializa el objeto JavaScript proporcionado en una cadena JSON.

JSON.stringify(json: object): string
Parameter
Tipo
Descripción

object

Devuelve:Una representación de cadena del objeto JavaScript proporcionado.

Ejemplo

La siguiente función serializa un objeto JavaScript en una cadena JSON equivalente:

exports = function() {
const jsonObject = {
answer: 42,
submittedAt: new Date("2020-03-02T16:46:47.977Z")
};
return JSON.stringify(jsonObject);
}
"{\"answer\":42,\"submittedAt\":\"2020-03-02T16:46:47.977Z\"}"

El EJSON módulo global es similar a JSON pero conserva información adicional del tipo JSON extendido.

EJSON es un superconjunto de JSON estándar que agrega soporte adicional para tipos que están disponibles en BSON pero no están incluidos en la especificación JSON.

Método
Descripción

Analizar una cadena JSON extendida serializada en un objeto JavaScript.

Serializar un objeto JavaScript en una cadena ExtendedJSON.

EJSON.parse()

Analiza la cadena EJSON proporcionada y la convierte en un objeto JavaScript.

EJSON.parse(ejsonString: string): object
Parameter
Tipo
Descripción

ejsonString

string

Una representación de cadena serializada de un objeto JSON extendido.

Devuelve:Una representación de objeto JavaScript de la cadena EJSON proporcionada.

Ejemplo

La siguiente función convierte una cadena EJSON serializada en un objeto JavaScript equivalente:

exports = function() {
const ejsonString = `{
"answer": {
"$numberLong": "42"
},
"submittedAt": {
"$date": {
"$numberLong": "1583167607977"
}
}
}`;
return EJSON.parse(ejsonString);
}
{
"answer": {
"$numberLong": "42"
},
"submittedAt": {
"$date": {
"$numberLong": "1583167607977"
}
}
}
EJSON.stringify()

Serializa el objeto JavaScript proporcionado en una cadena EJSON.

EJSON.stringify(json: object): string
Parameter
Tipo
Descripción

object

Documento

Un objeto EJSON. El objeto puede contener tipos BSON.

Devuelve:Una representación de cadena del objeto EJSON proporcionado.

Ejemplo

La siguiente función serializa un objeto JavaScript en una cadena EJSON equivalente:

exports = function() {
const jsonObject = {
answer: 42,
submittedAt: new Date("2020-03-02T16:46:47.977Z")
};
return EJSON.stringify(jsonObject);
}
"{\"answer\":{\"$numberLong\":\"42\"},\"submittedAt\":{\"$date\":{\"$numberLong\":\"1583167607977\"}}}"

El módulo global BSON le permite crear objetos BSON tipificados y convertirlos entre varios formatos de datos y codificaciones.

BSON, o JSON binario, es el formato de datos utilizado internamente por las bases de datos MongoDB. Codifica una representación binaria de las estructuras de datos de documentos mediante un superconjunto de los tipos JSON estándar. Para más información, consulte la especificación BSON.

Tipo
Descripción

Representar un valor de ObjectId

Representar una expresión regular

Representar una estructura de datos binaria

Representa un valor que se compara con un valor superior al de todos los demás valores.

Representa un valor que se compara con un valor inferior al de todos los demás valores.

Representa un entero con signo de 32bits

Representa un entero con signo de 64bits

Representa un número de punto flotante de 64bits

Representa un número de punto flotante de 128bits

El tipo BSON.ObjectId representa un identificador MongoDB ObjectId de 12byte.

BSON.ObjectId()

Construye un BSON.ObjectId objeto que codifica un ObjectId

new BSON.ObjectId(id: string)
Parameter
Tipo
Descripción

id

string

Opcional. Una cadena de 12bytes o una cadena de 24 caracteres hexadecimales.

Devuelve:Un BSON.ObjectId objeto que codifica la cadena ObjectId especificada o una ObjectId cadena generada si no se especificó ninguna.

Ejemplo

const objectId = new BSON.ObjectId("5e58667d902d38559c802b13");
const generatedObjectId = new BSON.ObjectId();

El BSON.BSONRegExp tipo representa una expresión regular. Puede usar un BSON.BSONRegExp objeto con el operador de $regex consulta para ejecutar una consulta de expresión regular en una colección de MongoDB.

BSON.BSONRegExp()

Construye un objeto BSON.BSONRegExp a partir de una cadena de expresión regular. Opcionalmente, puede especificar indicadores de configuración.

BSON.BSONRegExp(pattern: string, flags: string)
Parameter
Tipo
Descripción

pattern

string

Un patrón de expresión regular.

flags

string

Devuelve:Un objeto BSON.BSONRegExp que codifica el patrón de expresión regular y los indicadores proporcionados.

Ejemplo

const regex = BSON.BSONRegExp("the great", "ig");

El tipo BSON.Binary representa una cadena de datos codificada en binario.

BSON.Binary.fromHex()

Construye un objeto BSON.Binary a partir de datos representados como una cadena hexadecimal.

BSON.Binary.fromHex(
hexString: string,
subType?: number
): BSON.Binary
Parameter
Tipo
Descripción

hexString

string

Una cadena de caracteres hexadecimales alineada con bytes (0-9 y AF).

subType

entero

Opcional. El tipo de datos codificados en la cadena hexadecimal. El valor debe estar en el rango 0-,255 0donde, el valor predeterminado, representa un binario genérico. Para obtener una lista completa de los subtipos admitidos, consulte la especificación BSON.

Devuelve:Un objeto BSON.Binary que codifica la cadena hexadecimal proporcionada.

Ejemplo

const binary = BSON.Binary.fromHex("54657374206d65737361676520706c656173652069676e6f7265=");
BSON.Binary.prototype.toHex()

Convierte el objeto BSON.Binary en una cadena hexadecimal.

BSON.Binary.prototype.toHex(): string
Devuelve:Una representación de cadena hexadecimal del objeto BSON.Binary proporcionado.

Ejemplo

export = function() {
const binary = BSON.Binary.fromHex(
"54657374206d65737361676520706c656173652069676e6f7265="
);
const hexString = binary.toHex();
return hexString
}
"54657374206d65737361676520706c656173652069676e6f7265="
BSON.Binary.fromBase64()

Construye un objeto BSON.Binary a partir de datos representados como una cadena base64.

BSON.Binary.fromBase64(
base64String: string,
subType?: number
): BSON.Binary
Parameter
Tipo
Descripción

base64String

string

Una cadena de caracteres codificados en base64.

Nota

Relleno de cuerdas

La cadena codificada en base64 debe incluir uno o dos signos de igual (=), que se denominan "relleno" al final de la cadena. BSON.Binary.fromBase64() no admite cadenas sin relleno.

subType

entero

Opcional. El tipo de datos codificados en la cadena hexadecimal. El valor debe estar en el rango 0-,255 0donde, el valor predeterminado, representa un binario genérico. Para obtener una lista completa de los subtipos admitidos, consulte la especificación BSON.

Devuelve:Un objeto BSON.Binary que codifica la cadena base64 proporcionada.

Ejemplo

const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU=");
BSON.Binary.prototype.toBase64()

Convierte un objeto BSON.Binary en una cadena base64.

BSON.Binary.prototype.toBase64(): string
Devuelve:Una representación de cadena base64 del objeto BSON.Binary.

Ejemplo

const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU=");
const base64String = binary.toBase64();
BSON.Binary.prototype.text()

Convierte el objeto BSON.Binary en una cadena UTF-8.

BSON.Binary.prototype.text(): string
Devuelve:Una representación de cadena UTF-8 del objeto BSON.Binary proporcionado.

Ejemplo

const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU=");
const decodedString = binary.text();

El tipo BSON.MaxKey representa un valor que se compara con un valor superior al de todos los demás valores BSON.

Ejemplo

await collection.findOne({ date: { $lt: BSON.MaxKey } });

El tipo BSON.MinKey representa un valor que se compara con un valor inferior al de todos los demás valores BSON.

Ejemplo

await collection.findOne({ date: { $gt: BSON.MinKey } });

El tipo BSON.Int32 representa un entero con signo de 32bit.

BSON.Int32()

Construye un objeto BSON.Int32 a partir de un número de 32bit.

BSON.Int32(low32: number): BSON.Int32
Parameter
Tipo
Descripción

low32

Número

Un número de 32 bits.

Devuelve:Un objeto BSON.Int32 que codifica el entero especificado. Devuelve 0 si no se proporcionan argumentos.

Ejemplo

const int32 = BSON.Int32(42);

El tipo BSON.Long representa un entero con signo de 64bit.

BSON.Long(low32, high32)
BSON.Long(low32: number, high32: number): BSON.Long

Construye un objeto BSON.Long a partir de dos enteros de 32bits que representan los bits bajos 32 y los bits altos 32 en el entero de 64bits Long.

Parameter
Tipo
Descripción

low32

entero

Opcional. Los bits bajos 32 del entero largo. Estos bits representan los dígitos menos significativos del número.

high32

entero

Opcional. Los 32 bits más altos del número entero largo. Estos bits representan los dígitos más significativos del número.

Devuelve:Un objeto BSON.Long que codifica el entero especificado. Devuelve 0 si no se proporcionan argumentos.

BSON.Long codifica utilizando la siguiente fórmula:

(high32 * (2**32)) + low32

Ejemplo

const long = BSON.Long(600206158, 342);

El tipo BSON.Double representa un número de punto flotante de 64bit (8bytes).

Importante

Utilice el decimal128 para el dinero

BSON.Double Está sujeto a errores de redondeo de punto flotante, por lo que no se recomienda para casos donde los valores decimales deben redondearse con exactitud, por ejemplo, datos financieros. Para estos casos, utilice BSON.Decimal.128

BSON.Double(double)

Construye un objeto BSON.Double a partir de un valor decimal de 64bit.

BSON.Double(double: number): BSON.Double
Parameter
Tipo
Descripción

double

Número

Un valor decimal de 64 bits.

Devuelve:Un objeto BSON.Double que codifica el doble especificado. Devuelve 0 si no se proporciona ningún argumento.

Ejemplo

const double = BSON.Double(1234.5678);

El tipo BSON.Decimal128 representa un número de coma flotante de 128bits (16bytes). Este tipo está diseñado para casos donde los valores decimales deben redondearse con precisión, por ejemplo, datos financieros.

BSON.Decimal128.fromString(decimalString)

Construye un BSON.Decimal128 a partir de una representación de cadena de un número decimal.

BSON.Decimal128(decimalString: string): BSON.Decimal128
Parameter
Tipo
Descripción

decimalString

string

Una cadena que representa un número decimal, por ejemplo "1234.5678910123456".

Devuelve:Un BSON.Decimal128 que codifica el valor decimal proporcionado.

Ejemplo

const double = BSON.Decimal128.fromString("1234.5678910123456");

Volver

Context

En esta página