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. |
Utilidades
Tokens web JSON (utils.jwt)
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 | |
Descodifica el |
utils.jwt.encode()Genera una cadena de token web JSON codificada para
payloaden función designingMethodysecretespecificados.utils.jwt.encode( signingMethod: string, payload: object, secret: string, customHeaderFields: object ): string ParameterTipoDescripciónsigningMethodstring
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 firmaDescripció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
payloadObjeto
Un objeto JSON que especifica las reclamaciones del token y cualquier dato adicional relacionado.
secretstring
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 firmaDescripció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#.
customHeaderFieldsObjeto
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 payloadproporcionado.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 firmaHS512y 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
payloadde la cadena de token web JSON proporcionada. El valor dekeydebe corresponder al valor secreto utilizado para codificar la cadena JWT.utils.jwt.decode( jwtString: string, key: string, returnHeader: boolean ): object ParameterTipoDescripciónjwtStringstring
Una cadena de token web JSON que codifica un conjunto de reclamaciones firmadas con un valor secreto.
keystring
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 firmaDescripció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.
returnHeaderbooleano
Si
true, devuelve el encabezado JOSE del JWT además de la carga útil decodificada.acceptedSigningMethodscadena[]
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 returnHeaderesfalse, devuelve la carga útil EJSON decodificada.Si
returnHeadertruees, devuelve un objeto que contiene el encabezado JOSE en elheadercampo y la carga útil EJSON decodificada en elpayloadcampo.{ "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
HS512con el valor secreto"SuperSecret". Podemos decodificar el objeto de notificacionesutils.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 } }
Criptografíautils.crypto ()
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 una firma HMAC a partir de una entrada y un secreto 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 ParameterTipoDescripciónencryptionTypestring
El tipo de cifrado con el que se cifrará el mensaje. Se admiten los siguientes tipos de cifrado:
Cifrado AES
"aes"()
messagestring
La cadena de texto que desea cifrar.
keystring
Una clave criptográfica utilizada para cifrar el texto. La clave que debe usar depende del método de cifrado:
Tipo de cifradoClave de cifradoAES
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
aesEncryptionKeyque 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 ParameterTipoDescripciónencryptionTypestring
El tipo de cifrado utilizado para cifrar el texto proporcionado. Se admiten los siguientes tipos de cifrado:
Cifrado AES
"aes"()
encryptedMessageUn binario BSON que codifica la cadena de texto encriptada que desea descifrar.
keystring
Una clave criptográfica utilizada para descifrar el texto. La clave que debe usar depende del tipo de cifrado:
Tipo de cifradoClave de cifradoAES
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
aesEncryptionKeyque 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 ParameterTipoDescripciónencryptionTypestring
El tipo de cifrado utilizado para generar el par de claves privada/pública. Se admiten los siguientes tipos de cifrado:
Cifrado RSA
"rsa"()
messagestring
La cadena de texto que desea firmar.
privateKeystring
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 signatureSchemestring
Opcional. Por defecto:
"pss"El esquema de relleno que debe usar la firma. App Services admite la firma de mensajes con los siguientes esquemas:
Esquema de firma probabilística
"pss"()PKCS1v1.5 (
"pkcs1v15")
Devuelve: Una firma criptográfica BSON.Binary para el mensaje firmado utilizando la clave privada especificada. Ejemplo
Supongamos que hemos definido un valor llamado
rsaPrivateKeyque 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 ParameterTipoDescripciónencryptionTypestring
El tipo de cifrado utilizado para generar el par de claves privada/pública. Se admiten los siguientes tipos de cifrado:
Cifrado RSA
"rsa"()
messagestring
La cadena de texto cuya firma desea verificar. Si la firma es válida, este es el mensaje exacto que se firmó.
publicKeystring
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 signatureLa firma que desea verificar.
signatureSchemestring
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:
Esquema de firma probabilística
"pss"()PKCS1v1.5 (
"pkcs1v15")
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 ParameterTipoDescripcióninputstring
La entrada para la que desea generar una firma.
secretstring
La clave secreta a utilizar al generar la firma.
hash_functionstring
El nombre de la función hash que se usará al generar la firma. Se admiten las siguientes funciones:
"sha1","sha256","sha512".output_formatstring
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 ParameterTipoDescripciónhash_functionstring
El nombre de la función hash. Se admiten las siguientes funciones:
"sha1","sha256","md5".inputcadena o BSON.Binary
Obligatorio. La entrada para la que desea generar un valor hash.
Devuelve: Un objeto BSON.Binaryque 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="
JSON (Notación de objetos JavaScript)
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 ParameterTipoDescripciónjsonStringUna 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 ParameterTipoDescripciónobjectDevuelve: 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\"}"
EJSON (JSON extendido)
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 ParameterTipoDescripciónejsonString
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 ParameterTipoDescripciónobjectDocumento
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\"}}}"
BSON (JSON binario)
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 |
BSON.ObjectId
El tipo BSON.ObjectId representa un identificador MongoDB ObjectId de 12byte.
BSON.ObjectId()Construye un
BSON.ObjectIdobjeto que codifica un ObjectIdnew BSON.ObjectId(id: string) ParameterTipoDescripciónidstring
Opcional. Una cadena de 12bytes o una cadena de 24 caracteres hexadecimales.
Devuelve: Un BSON.ObjectIdobjeto que codifica la cadena ObjectId especificada o unaObjectIdcadena generada si no se especificó ninguna.Ejemplo
const objectId = new BSON.ObjectId("5e58667d902d38559c802b13"); const generatedObjectId = new BSON.ObjectId();
BSON.BSONRegExp
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.BSONRegExpa partir de una cadena de expresión regular. Opcionalmente, puede especificar indicadores de configuración.BSON.BSONRegExp(pattern: string, flags: string) ParameterTipoDescripciónpatternstring
Un patrón de expresión regular.
flagsstring
Opcional. Uno o más indicadores de expresión regular.
Devuelve: Un objeto BSON.BSONRegExpque codifica el patrón de expresión regular y los indicadores proporcionados.Ejemplo
const regex = BSON.BSONRegExp("the great", "ig");
BSON.Binary
El tipo BSON.Binary representa una cadena de datos codificada en binario.
BSON.Binary.fromHex()Construye un objeto
BSON.Binarya partir de datos representados como una cadena hexadecimal.BSON.Binary.fromHex( hexString: string, subType?: number ): BSON.Binary ParameterTipoDescripciónhexStringstring
Una cadena de caracteres hexadecimales alineada con bytes (0-9 y AF).
subTypeentero
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.Binaryque codifica la cadena hexadecimal proporcionada.Ejemplo
const binary = BSON.Binary.fromHex("54657374206d65737361676520706c656173652069676e6f7265=");
BSON.Binary.prototype.toHex()Convierte el objeto
BSON.Binaryen una cadena hexadecimal.BSON.Binary.prototype.toHex(): string Devuelve: Una representación de cadena hexadecimal del objeto BSON.Binaryproporcionado.Ejemplo
export = function() { const binary = BSON.Binary.fromHex( "54657374206d65737361676520706c656173652069676e6f7265=" ); const hexString = binary.toHex(); return hexString } "54657374206d65737361676520706c656173652069676e6f7265="
BSON.Binary.fromBase64()Construye un objeto
BSON.Binarya partir de datos representados como una cadena base64.BSON.Binary.fromBase64( base64String: string, subType?: number ): BSON.Binary ParameterTipoDescripciónbase64Stringstring
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.subTypeentero
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.Binaryque codifica la cadena base64 proporcionada.Ejemplo
const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU=");
BSON.Binary.prototype.toBase64()Convierte un objeto
BSON.Binaryen 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.Binaryen una cadena UTF-8.BSON.Binary.prototype.text(): string Devuelve: Una representación de cadena UTF-8 del objeto BSON.Binaryproporcionado.Ejemplo
const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU="); const decodedString = binary.text();
BSON.Clave máxima
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 } });
BSON.MinKey
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 } });
BSON.Int32
El tipo BSON.Int32 representa un entero con signo de 32bit.
BSON.Int32()Construye un objeto
BSON.Int32a partir de un número de 32bit.BSON.Int32(low32: number): BSON.Int32 ParameterTipoDescripciónlow32Número
Un número de 32 bits.
Devuelve: Un objeto BSON.Int32que codifica el entero especificado. Devuelve0si no se proporcionan argumentos.Ejemplo
const int32 = BSON.Int32(42);
BSON.Long
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.Longa partir de dos enteros de 32bits que representan los bits bajos 32 y los bits altos 32 en el entero de 64bitsLong.ParameterTipoDescripciónlow32entero
Opcional. Los bits bajos 32 del entero largo. Estos bits representan los dígitos menos significativos del número.
high32entero
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.Longque codifica el entero especificado. Devuelve0si no se proporcionan argumentos.BSON.Longcodifica utilizando la siguiente fórmula:(high32 * (2**32)) + low32 Ejemplo
const long = BSON.Long(600206158, 342);
BSON.Doble
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.Doublea partir de un valor decimal de 64bit.BSON.Double(double: number): BSON.Double ParameterTipoDescripcióndoubleNúmero
Un valor decimal de 64 bits.
Devuelve: Un objeto BSON.Doubleque codifica el doble especificado. Devuelve0si no se proporciona ningún argumento.Ejemplo
const double = BSON.Double(1234.5678);
BSON.Decimal128
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.Decimal128a partir de una representación de cadena de un número decimal.BSON.Decimal128(decimalString: string): BSON.Decimal128 ParameterTipoDescripcióndecimalStringstring
Una cadena que representa un número decimal, por ejemplo
"1234.5678910123456".Devuelve: Un BSON.Decimal128que codifica el valor decimal proporcionado.Ejemplo
const double = BSON.Decimal128.fromString("1234.5678910123456");