Todas as funções têm acesso a módulos globais incorporados que oferecem suporte ao trabalho comum de transformação, codificação e processamento de dados. Você pode acessar os módulos no código-fonte da sua função por meio de variáveis globais específicas para cada módulo.
Dica
Esses módulos globais não são iguais aos módulos integrados Node.js. Para obter mais informações sobre os módulos Node.js com suporte, incluindo como importá-los, consulte Suporte a módulos integrados.
Módulo | Descrição |
|---|---|
Métodos para ler e gravar JSON web token. | |
Métodos que implementam algoritmos criptográficos como hashes e assinaturas. | |
Métodos que convertem entre representações de string e objeto de dadosJSON. | |
Métodos que convertem entre representações de string e objeto de dados JSON estendidos . | |
Métodos que criam objetos JSON binários e convertem entre vários tipos de dados e codificações BSON. |
Serviços públicos
JSON Web Tokens (utils.jwt)
Você pode criar e ler JSON web tokens com a interface utils.jwt.
Método | Descrição |
|---|---|
Gera uma string JSON web token codificada para um determinado | |
Decodifica o |
utils.jwt.encode()Gera uma string de JSON web token codificada para o
payloadcom base nosigningMethodesecretespecificados.utils.jwt.encode( signingMethod: string, payload: object, secret: string, customHeaderFields: object ): string ParâmetroTipoDescriçãosigningMethodstring
O algoritmo criptográfico a ser usado ao codificar o JWT. Atlas App Services suporta os seguintes métodos de assinatura JWT:
Método de assinaturaDescrição"HS256"HMAC usando SHA-256
"HS384"HMAC usando SHA-384
"HS512"HMAC usando SHA-512
"RS256"RSASA-PKCS1-v1_5 usando SHA-256
"RS384"RSASA-PKCS1-v1_5 usando SHA-384
"RS512"RSASA-PKCS1-v1_5 usando SHA-512
"ES256"ECDSA usando P-256 e SHA-256
"ES384"ECDSA usando P-384 e SHA-384
"ES512"ECDSA usando P-512 e SHA-512
"PS256"RSASA-PSS usando SHA-256 e MGF1 com SHA-256
"PS384"RSASA-PSS usando SHA-384 e MGF1 com SHA-384
"PS512"RSASA-PSS usando SHA-512 e MGF1 com SHA-512
payloadobjeto
Um objeto JSON que especifica as reivindicações do token e quaisquer dados adicionais relacionados.
secretstring
Uma string secreta que o App Services utiliza para assinar o token. O valor da strings depende do método de assinatura que você usa:
Métodos de assinaturaDescrição"HS256""HS384""HS512"Uma string aleatória.
"RS256""RS384""RS512"Uma chave privada RSA-SHA no formato PKCS#8.
"PS256""PS384""PS512"Uma chave privada RSA-PSS no formato PKCS#8.
"ES256""ES384""ES512"Uma chave privada ECDSA no formato PKCS#8.
customHeaderFieldsobjeto
Um objeto JSON que especifica campos adicionais a serem incluídos no cabeçalho JOSE do JSON web token.
Retorna: Uma string de JSON web token codificada para o payloadfornecido.Exemplo
Considere o seguinte objeto de declaração JSON web token:
{ "sub": "1234567890", "name": "Joe Example", "iat": 1565721223187 } Podemos codificar o objeto de declarações como uma string JSON web token ligando para
utils.jwt.encode(). A função a seguir codifica o JSON web token usando o método de assinaturaHS512e o segredo"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 o
payloadda string de JSON web token fornecida. O valor dekeydeve corresponder ao valor secreto que foi usado para codificar a string JSON web token.utils.jwt.decode( jwtString: string, key: string, returnHeader: boolean ): object ParâmetroTipoDescriçãojwtStringstring
Uma string de token da JSON da Web que codifica um conjunto de reivindicações assinado com um valor secreto.
keystring
Uma string que o App Services usa para verificar a assinatura de token. O valor da string depende do método de assinatura que você utiliza:
Métodos de assinaturaDescrição"HS256""HS384""HS512"A string aleatória que foi usada para assinar o token.
"RS256""RS384""RS512"A chave pública RSA-SHA que corresponde à chave privada usada para assinar o token.
"PS256""PS384""PS512"A chave pública RSA-PSS que corresponde à chave privada que foi usada para assinar o token.
"ES256""ES384""ES512"A chave pública ECDSA que corresponde à chave privada que foi usada para assinar o token.
returnHeaderbooleano
Se
true, retorne o cabeçalho JOSE do JSON web token além da carga útil descodificada.acceptedSigningMethodsstring[]
Opcional. Array de métodos de assinatura aceitos. Por exemplo,
["PS256", "HS256"]. Esse argumento deve ser incluído para evitar vulnerabilidades de segurança JWT conhecidas.Retorna: Se returnHeaderforfalse, retorna a carga útil EJSON decodificada.Se
returnHeadertruefor, retorna um objeto que contém o cabeçalho JOSE noheadercampo e a carga útil EJSON decodificada nopayloadcampo.{ "header": { "<JOSE Header Field>": <JOSE Header Value>, ... }, "payload": { "<JWT Claim Field>": <JWT Claim Value>, ... } } Exemplo
Considere a seguinte string JSON web token assinada:
"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvZSBTY2htb2UiLCJpYXQiOjE1NjU3MjEyMjMxODd9.-QL15ldu2BYuJokNWT6YRiwZQIiIpvq6Kyv-C6qslNdNiUVxo8zqLJZ1iEkNf2yZKMIrQuMCtIC1tzd2H31AxA" O JSON web token foi assinado usando o método de assinatura
HS512com o valor secreto"SuperSecret". Podemos decodificar o objeto de declarações do JWTutils.jwt.decode(). A função a seguir decodifica a string JSON web token em um objeto EJSON:exports = function(jwtString) { const key = "SuperSecret"; return utils.jwt.decode(jwtString, key, false, ["HS512"]); } { "sub": "1234567890", "name": "Joe Example", "iat": { "$numberDouble": 1565721223187 } }
Criptografia (utils.crypto)
Você pode criptografar, descriptografar, assinar e verificar dados usando algoritmos criptográficos com a interface utils.crypto .
Método | Descrição |
|---|---|
Gera uma string de texto criptografada a partir de determinada string de texto usando um método e uma chave de criptografia específicos. | |
Descriptografa uma sequência de texto fornecida usando um método e uma chave de criptografia específicos. | |
Gera uma assinatura criptograficamente exclusiva para uma determinada mensagem usando uma chave privada. | |
Verifica se uma assinatura é válida para determinada mensagem e chave pública. | |
Gera uma assinatura HMAC a partir de uma determinada entrada e segredo. | |
Gera um valor de hash para uma determinada entrada e função de hash. |
utils.crypto.encrypt()Gera uma string de texto criptografada a partir do texto fornecido usando o método e a chave de criptografia especificados.
utils.crypto.encrypt( encryptionType: string, message: string, key: string ): BSON.Binary ParâmetroTipoDescriçãoencryptionTypestring
O tipo de criptografia com o qual criptografar a mensagem. Os seguintes tipos de criptografia são aceitos:
Criptografia AES (
"aes")
messagestring
A sequência de texto que você deseja criptografar.
keystring
Uma chave criptográfica usada para criptografar o texto. A chave que você deve usar depende do método de criptografia:
Tipo de criptografiachave de criptografiaAES
Uma string aleatória de 16 bytes, 24 bytes ou 32 bytes
Retorna: Um objeto Binary BSON que contém a string de texto criptografada com o tipo de criptografia e chave especificados. Exemplo
Suponha que definimos um valor chamado
aesEncryptionKeyque contém a seguinte chave de criptografia AES de 32 bytes:"603082712271C525E087BD999A4E0738" Com esta chave AES, podemos criptografar uma mensagem em uma string base64 usando a seguinte função:
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()Descriptografa a string de texto fornecida usando a chave e o tipo de criptografia especificados. Se o tipo de criptografia e a chave forem iguais as usadas para criptografar, isso retorna o texto original, não criptografado.
utils.crypto.decrypt( encryptionType: string, encryptedMessage: BSON.Binary, key: string ): BSON.Binary ParâmetroTipoDescriçãoencryptionTypestring
O tipo de criptografia que foi usada para criptografar o texto fornecido. Os seguintes tipos de criptografia são aceitos:
Criptografia AES (
"aes")
encryptedMessageUm binário BSON que codifica a string de texto criptografada que você deseja descriptografar.
keystring
Uma chave criptográfica usada para descriptografar o texto. A chave que você deve usar depende do tipo de criptografia:
Tipo de criptografiachave de criptografiaAES
Uma string aleatória de 16 bytes, 24 bytes ou 32 bytes
Retorna: Um objeto Binary BSON que contém a mensagem descriptografada. Se a mensagem criptografada fornecida foi criptografada com o método e a chave especificados, a mensagem descriptografada será idêntica à mensagem original.
Exemplo
Suponha que definimos um valor chamado
aesEncryptionKeyque contém a seguinte chave de criptografia AES de 32 bytes:"603082712271C525E087BD999A4E0738" Podemos usar essa chave AES para descriptografar qualquer string base64 que foi criptografada com a mesma chave usando a seguinte função:
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()Gera uma assinatura criptograficamente exclusiva para uma mensagem usando uma chave privada. A assinatura pode ser verificada com a chave pública correspondente para garantir que o assinante tenha acesso à chave privada e que o conteúdo da mensagem não tenha sido alterado desde que foi assinado.
utils.crypto.sign( encryptionType: string, message: string, privateKey: string, signatureScheme: string ): BSON.Binary ParâmetroTipoDescriçãoencryptionTypestring
O tipo de criptografia usado para gerar o par de chaves privada/pública. São aceitos os seguintes tipos de criptografia:
Criptografia RSA (
"rsa")
messagestring
A sequência de texto que você deseja assinar.
privateKeystring
Uma chave privada gerada com o tipo de criptografia especificado.
Importante
Formato de chave
Nem todas as chaves RSA usam o mesmo formato. O App Services só pode assinar mensagens com uma chave privada que esteja em conformidade com o formato padrão PKCS#1. As chaves privadas neste formato têm o cabeçalho
-----BEGIN RSA PRIVATE KEY-----.Você pode usar o roteiro shell a seguir para gerar um par de chaves públicas/privadas RSA válido e salvar cada chave em seu próprio arquivo 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. Padrão:
"pss"O esquema de preenchimento que a assinatura deve usar. O App Services oferece suporte à assinatura de mensagens com os seguintes esquemas:
PKCS1v1.5 (
"pkcs1v15")
Retorna: Uma assinatura criptográfica BSON.Binary para a mensagem assinada usando a chave privada especificada. Exemplo
Vamos supor que definimos um valor denominado
rsaPrivateKeyque contém a seguinte chave 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----- Com esta chave RSA, podemos assinar uma mensagem usando a seguinte função:
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()Verifica se a assinatura fornecida é válida para a mensagem e a chave pública especificadas.
Se a assinatura for válida, ela garante que o signatário tenha acesso à chave privada correspondente e que o conteúdo da mensagem não tenha sido alterado desde que foi assinado.
utils.crypto.verify( encryptionType: string, message: string, publicKey: string, signature: BSON.Binary, signatureScheme: string ): boolean ParâmetroTipoDescriçãoencryptionTypestring
O tipo de criptografia usado para gerar o par de chaves privada/pública. São aceitos os seguintes tipos de criptografia:
Criptografia RSA (
"rsa")
messagestring
A string cuja assinatura você deseja verificar. Se a assinatura for válida, esta é a mensagem exata que foi assinada.
publicKeystring
A chave pública cuja assinatura você deseja verificar. Se a assinatura for válida, esta é a chave pública correspondente da chave privada que foi utilizada para assinar a mensagem.
Importante
Formato de chave
Nem todas as chaves RSA usam o mesmo formato. O App Services só pode verificar assinaturas com chaves RSA que estejam em conformidade com o formato padrão PKCS#1. As chaves públicas neste formato têm o cabeçalho
-----BEGIN RSA PUBLIC KEY-----.Você pode usar o roteiro shell a seguir para gerar um par de chaves públicas/privadas RSA válido e salvar cada chave em seu próprio arquivo 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 signatureA assinatura que você deseja verificar.
signatureSchemestring
Opcional. Padrão:
"pss"O esquema de preenchimento que a assinatura utiliza. O App Services oferece suporte à verificação de assinaturas que usam os seguintes esquemas:
PKCS1v1.5 (
"pkcs1v15")
Retorna: Um booleano que, se true, indica se a assinatura é válida ou não para a mensagem fornecida e a chave pública.Exemplo
Recebemos uma mensagem com uma assinatura no formato BSON.Binary e queremos verificar se a mensagem foi assinada com a chave privada que corresponde à chave pública RSA do emissor:
-----BEGIN RSA PUBLIC KEY----- MIGJAoGBANWwSOx7ao7i/enxEz+rxGrOWhzWV57fjKhi4pnZx6a5S7wmlzsoU7X5 omld1tI9k2EYt0A2fx/agwhnVH2GAQlGf9Cb9jILhE9MaDnmfMepKXOI1kkxDIRT JTuTHn4pvqS2CiOGTyhxlGSiszwUTKWSsrOBKt9rLQ9xYc+wqWZ5AgMBAAE= -----END RSA PUBLIC KEY----- Com esta chave RSA, podemos verificar uma mensagem assinada com a chave privada correspondente usando a seguinte função:
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()Gera uma assinatura HMAC a partir da entrada e do segredo fornecidos. Isso é útil ao se comunicar com serviços HTTP de terceiros que exigem solicitações assinadas.
utils.crypto.hmac( input: string, secret: string, hash_function: string, output_format: string ): string ParâmetroTipoDescriçãoinputstring
A entrada para a qual você deseja gerar uma assinatura.
secretstring
A chave secreta a ser usada ao gerar a assinatura.
hash_functionstring
O nome da função de hash a ser usada ao gerar a assinatura. As seguintes funções são suportadas:
"sha1","sha256","sha512".output_formatstring
O formato da assinatura gerada. Pode ser
"hex"para uma string hexadecimal ou"base64"para uma string Base64.Retorna: A assinatura da entrada, no formato especificado por output_format.Exemplo
A seguinte função gera uma assinatura sha256 como uma string em base64:
exports = function() { const signature = utils.crypto.hmac( "hello!", "super-secret", "sha256", "base64" ) return signature } "SUXd6PRMaTXXgBGaGsIHzaDWgTSa6C3D44lRGrvRak0="
utils.crypto.hash()Gera um valor de hash para a entrada fornecida usando a função de hash especificada.
utils.crypto.hash( hash_function: string, input: string | BSON.Binary ): BSON.Binary ParâmetroTipoDescriçãohash_functionstring
O nome da função de hash. As seguintes funções são suportadas:
"sha1","sha256","md5".inputstring ou BSON.Binary
Obrigatório. A entrada para a qual você gostaria de gerar um valor de hash.
Retorna: Um objeto BSON.Binaryque codifica o valor de hash para a entrada fornecida gerada pela função de hash especificada.Exemplo
A função a seguir faz hash de uma string de entrada com sha256:
exports = function() { return utils.crypto.hash( "sha256", "hello!" ) } "zgYJL7lI2f+sfRo3bkBLJrdXW8wR7gWkYV/vT+w6MIs="
JSON (notação de objeto JavaScript)
O módulo global JSON fornece métodos JSON para serializar e desserializar objetos JavaScript padrão.
Método | Descrição |
|---|---|
Analise uma string JSON serializada em um objeto JavaScript. | |
Serialize um objeto JavaScript em uma string JSON. |
JSON.parse()Analisa a string JSON fornecida e a converte em um objeto JavaScript.
JSON.parse(jsonString: string): object ParâmetroTipoDescriçãojsonStringUma representação de string serializada de um objeto JSON padrão.
Retorna: Um objeto JavaScript padrão gerado a partir da string JSON fornecida. Exemplo
A seguinte função converte uma string JSON serializada em um 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 o objeto JavaScript fornecido para uma string JSON.
JSON.stringify(json: object): string ParâmetroTipoDescriçãoobjectRetorna: Uma representação de string do objeto JavaScript fornecido. Exemplo
A função a seguir serializa um objeto JavaScript em uma string 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 estendido)
O módulo global EJSON é semelhante ao JSON , mas preserva informações adicionais do tipo JSON estendido .
EJSON é um superconjunto de JSON padrão que adiciona suporte adicional para tipos que estão disponíveis em BSON, mas não incluídos na especificação JSON.
Método | Descrição |
|---|---|
Analise uma string JSON estendida serializada em um objeto JavaScript. | |
Serialize um objeto JavaScript em uma string ExtendedJSON. |
EJSON.parse()Analisa a string EJSON fornecida e a converte em um objeto JavaScript.
EJSON.parse(ejsonString: string): object ParâmetroTipoDescriçãoejsonString
string
Uma representação de string serializada de um objeto JSON estendido.
Retorna: Uma representação de objeto JavaScript da string EJSON fornecida. Exemplo
A função a seguir converte uma string EJSON serializada em um 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 o objeto JavaScript fornecido para uma string EJSON .
EJSON.stringify(json: object): string ParâmetroTipoDescriçãoobjectdocumento
Um objeto EJSON . O objeto pode conter BSON types.
Retorna: Uma representação de string do objeto EJSON fornecido. Exemplo
A função a seguir serializa um objeto JavaScript em uma string 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 binário)
O módulo global do BSON permite a você criar objetos BSON digitados e convertê-los entre vários formatos de dados e codificações.
BSON, ou Binary JSON, é o formato de dados usado internamente pelos bancos de dados MongoDB. Ele codifica uma representação binária de estruturas de dados de documento usando um superconjunto de tipos JSON padrão. Para obter mais informações, consulte a especificação BSON.
Tipo | Descrição |
|---|---|
Representar um valor ObjectId | |
Representar uma expressão regular | |
Representar uma estrutura de dados binária | |
Representar um valor que compara mais alto do que todos os outros valores | |
Representar um valor que se compara menor do que todos os outros valores | |
Representar um número inteiro assinado de 32 bits | |
Representar um número inteiro assinado de 64 bits | |
Representar um número de ponto flutuante de 64 bits | |
Representa um número de ponto flutuante de 128 bits |
BSON.ObjectId
O tipo BSON.ObjectId representa um identificador MongoDB ObjectId de 12 bytes.
BSON.ObjectId()Constrói um objeto
BSON.ObjectIdque codifica um ObjectIdnew BSON.ObjectId(id: string) ParâmetroTipoDescriçãoidstring
Opcional. Uma string de 12 bytes ou uma string de 24 caracteres hexadecimais.
Retorna: Um objeto BSON.ObjectIdque codifica a string ObjectId especificada ou uma stringObjectIdgerada se nenhuma tiver sido especificada.Exemplo
const objectId = new BSON.ObjectId("5e58667d902d38559c802b13"); const generatedObjectId = new BSON.ObjectId();
BSON.BSONRegExp
O tipo BSON.BSONRegExp representa uma expressão regular. Você pode usar um objeto BSON.BSONRegExp com o operador de query $regex para executar uma query de expressão regular em uma collection do MongoDB.
BSON.BSONRegExp()Constrói um objeto
BSON.BSONRegExpa partir de uma string de expressão regular. Opcionalmente, você pode especificar sinalizadores de configuração.BSON.BSONRegExp(pattern: string, flags: string) ParâmetroTipoDescriçãopatternstring
flagsstring
Opcional. Um ou mais sinalizadores de expressão regular.
Retorna: Um objeto BSON.BSONRegExpque codifica o padrão e os sinalizadores de expressão regular fornecidos.Exemplo
const regex = BSON.BSONRegExp("the great", "ig");
BSON.Binary
O tipo BSON.Binary representa uma string de dados com codificação binária.
BSON.Binary.fromHex()Constrói um objeto
BSON.Binarya partir de dados representados como uma cadeia hexadecimal.BSON.Binary.fromHex( hexString: string, subType?: number ): BSON.Binary ParâmetroTipoDescriçãohexStringstring
Uma string alinhada de caracteres hexadecimais (0-9 e A).
subTypeinteiro
Opcional. O tipo de dados codificado na string hexadecimal. O valor deve estar na faixa 0-255, em que
0, o valor padrão, representa um binário genérico. Para obter uma lista completa dos subtipos compatíveis, consulte a especificação BSON.Retorna: Um objeto BSON.Binaryque codifica a string hexadecimal fornecida.Exemplo
const binary = BSON.Binary.fromHex("54657374206d65737361676520706c656173652069676e6f7265=");
BSON.Binary.prototype.toHex()Converte o objeto
BSON.Binaryem uma string hexadecimal.BSON.Binary.prototype.toHex(): string Retorna: Uma representação de string hexadecimal do objeto BSON.Binaryfornecido.Exemplo
export = function() { const binary = BSON.Binary.fromHex( "54657374206d65737361676520706c656173652069676e6f7265=" ); const hexString = binary.toHex(); return hexString } "54657374206d65737361676520706c656173652069676e6f7265="
BSON.Binary.fromBase64()Constrói um objeto
BSON.Binarya partir de dados representados como uma string base64.BSON.Binary.fromBase64( base64String: string, subType?: number ): BSON.Binary ParâmetroTipoDescriçãobase64Stringstring
Uma sequência de caracteres codificados base64.
Observação
Preenchimento de strings
A string codificada em base64 deve incluir um ou dois sinais de igual (
=), chamados de "padding", no final da string.BSON.Binary.fromBase64()não suporta cadeia de caracteres não adicionadas.subTypeinteiro
Opcional. O tipo de dados codificado na string hexadecimal. O valor deve estar na faixa 0-255, em que
0, o valor padrão, representa um binário genérico. Para obter uma lista completa dos subtipos compatíveis, consulte a especificação BSON.Retorna: Um objeto BSON.Binaryque codifica a string base64 fornecida.Exemplo
const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU=");
BSON.Binary.prototype.toBase64()Converte um objeto
BSON.Binaryem uma string base64.BSON.Binary.prototype.toBase64(): string Retorna: Uma representação de cadeia de caracteres base64 do objeto BSON.Binary.Exemplo
const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU="); const base64String = binary.toBase64();
BSON.Binary.prototype.text()Converte o objeto
BSON.Binaryem uma string UTF-8.BSON.Binary.prototype.text(): string Retorna: Uma representação de string UTF-8 do objeto BSON.Binaryfornecido.Exemplo
const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU="); const decodedString = binary.text();
BSON.MaxKey
O tipo BSON.MaxKey representa um valor que compara mais alto do que todos os outros valores BSON.
Exemplo
await collection.findOne({ date: { $lt: BSON.MaxKey } });
BSON.MinKey
O tipo BSON.MinKey representa um valor que compara menor do que todos os outros valores BSON.
Exemplo
await collection.findOne({ date: { $gt: BSON.MinKey } });
BSON.Int32
O tipo BSON.Int32 representa um número inteiro assinado de 32 bits.
BSON.Int32()Constrói um objeto
BSON.Int32a partir de um número de 32 bits.BSON.Int32(low32: number): BSON.Int32 ParâmetroTipoDescriçãolow32número
Um número de 32 bits.
Retorna: Um objeto BSON.Int32que codifica o número inteiro especificado. Retorna0se nenhum argumento for fornecido.Exemplo
const int32 = BSON.Int32(42);
BSON.Long
O tipo BSON.Long representa um número inteiro assinado de 64 bits.
BSON.Long(low32, high32)BSON.Long(low32: number, high32: number): BSON.Long Constrói um objeto
BSON.Longa partir de dois números inteiros de 32 bits que representam os 32 bits inferiores e os 32 bits superiores no número inteiroLongde 64 bits.ParâmetroTipoDescriçãolow32inteiro
Opcional. Os 32 bits inferiores do número inteiro longo. Esses bits representam os dígitos menos significativos do número.
high32inteiro
Opcional. Os 32 bits superiores do número inteiro longo. Esses bits representam os dígitos mais significativos do número.
Retorna: Um objeto BSON.Longque codifica o número inteiro especificado. Retorna0se nenhum argumento for fornecido.BSON.Longcodifica usando a seguinte fórmula:(high32 * (2**32)) + low32 Exemplo
const long = BSON.Long(600206158, 342);
BSON.Double
O tipo BSON.Double representa um número de ponto flutuante de 64 bits (8 bytes).
Importante
Use Decimal128 para dinheiro
BSON.Double está sujeito a erros de arredondamento de ponto flutuante, portanto, não é recomendado para casos de uso em que os valores decimais devem arredondar exatamente, por exemplo dados financeiros. Nesses casos, utilize BSON.Decimal128 .
BSON.Double(double)Constrói um objeto
BSON.Doublea partir de um valor decimal de 64 bits.BSON.Double(double: number): BSON.Double ParâmetroTipoDescriçãodoublenúmero
Um valor decimal de 64 bits.
Retorna: Um objeto BSON.Doubleque codifica o duplo especificado. Retorna0se nenhum argumento for fornecido.Exemplo
const double = BSON.Double(1234.5678);
BSON.Decimal128
O tipo BSON.Decimal128 representa um número de ponto flutuante de 128 bits (16 bytes). Esse tipo é destinado a casos de uso em que os valores decimais devem arredondar exatamente, por exemplo dados financeiros.
BSON.Decimal128.fromString(decimalString)Constrói um
BSON.Decimal128a partir de uma representação de string de um número decimal.BSON.Decimal128(decimalString: string): BSON.Decimal128 ParâmetroTipoDescriçãodecimalStringstring
Uma string que representa um número decimal, por exemplo
"1234.5678910123456".Retorna: Um BSON.Decimal128que codifica o valor decimal fornecido.Exemplo
const double = BSON.Decimal128.fromString("1234.5678910123456");