Global Modules
Nesta página
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
Veja também:
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 JSON dados. | |
Métodos que convertem entre representações de string e objeto de dados JSON estendidos . | |
Métodos que criam JSON binário objetos e converter 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 utils.jwt
interface .
Método | Descrição |
---|---|
Gera uma string JSON web token codificada para um determinado payload , signingMethod e secret . | |
Decodifica o payload de uma string de JSON web token. |
utils.jwt.encode()
Gera uma string de JSON web token codificada para o
payload
com base nosigningMethod
esecret
especificados.utils.jwt.encode( signingMethod: string, payload: object, secret: string, customHeaderFields: object ): string ParâmetroTipoDescriçãosigningMethod
stringO 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-512payload
objetoUm objeto JSON que especifica as reivindicações do token e quaisquer dados adicionais relacionados.secret
stringUma 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"
Um ECDSA chave privada no8 formato PKCS# .customHeaderFields
objetoUm JSON objeto 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 payload
fornecido.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 assinaturaHS512
e 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
payload
da string de JSON web token fornecida. O valor dekey
deve 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çãojwtString
stringUma string de token da JSON da Web que codifica um conjunto de reivindicações assinado com um valor secreto.key
stringUma 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"
O ECDSA chave pública que corresponde à chave privada que foi usada para assinar o token.returnHeader
booleanoSetrue
, retorne o cabeçalho JOSE do JSON web token além da carga útil descodificada.acceptedSigningMethods
string[]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 returnHeader
forfalse
, retorna a carga útil EJSON decodificada.Se
returnHeader
fortrue
, retorna um objeto que contém o cabeçalho JOSE noheader
campo e a carga útil EJSON decodificada nopayload
campo .{ "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
HS512
com 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 um HMAC assinatura 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çãoencryptionType
stringO tipo de criptografia com o qual criptografar a mensagem. Os seguintes tipos de criptografia são aceitos:
Criptografia AES (
"aes"
)
message
stringA sequência de texto que você deseja criptografar.key
stringUma chave criptográfica usada para criptografar o texto. A chave que você deve usar depende do método de criptografia:
Tipo de criptografiachave de criptografiaAESUma string aleatória de 16 bytes, 24 bytes ou 32 bytesRetorna: 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
aesEncryptionKey
que 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çãoencryptionType
stringO tipo de criptografia que foi usada para criptografar o texto fornecido. Os seguintes tipos de criptografia são aceitos:
Criptografia AES (
"aes"
)
encryptedMessage
Um binário BSON que codifica a string de texto criptografada que você deseja descriptografar.key
stringUma chave criptográfica usada para descriptografar o texto. A chave que você deve usar depende do tipo de criptografia:
Tipo de criptografiachave de criptografiaAESUma string aleatória de 16 bytes, 24 bytes ou 32 bytesRetorna: 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
aesEncryptionKey
que 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çãoencryptionType
stringO tipo de criptografia usado para gerar o par de chaves privada/pública. São aceitos os seguintes tipos de criptografia:
Criptografia RSA (
"rsa"
)
message
stringA sequência de texto que você deseja assinar.privateKey
stringUma chave privada gerada com o tipo de criptografia especificado.
Importante
Formato de chave
Nem todas as chaves RSA usam o mesmo formato. Atlas App Services só pode assinar mensagens com uma chave privada que esteja em conformidade com o padrão PKCS#1 formato. 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 signatureScheme
stringOpcional. Padrão:
"pss"
O esquema de preenchimento que a assinatura deve usar. Atlas 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
rsaPrivateKey
que 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çãoencryptionType
stringO tipo de criptografia usado para gerar o par de chaves privada/pública. São aceitos os seguintes tipos de criptografia:
Criptografia RSA (
"rsa"
)
message
stringA string cuja assinatura você deseja verificar. Se a assinatura for válida, esta é a mensagem exata que foi assinada.publicKey
stringA 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. Atlas App Services só pode verificar assinaturas com chaves RSA que estejam em conformidade com o padrão PKCS#1 formato. 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 signature
A assinatura que você deseja verificar.signatureScheme
stringOpcional. Padrão:
"pss"
O esquema de preenchimento que a assinatura utiliza. Atlas 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 um HMAC assinatura da entrada e 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çãoinput
stringA entrada para a qual você deseja gerar uma assinatura.secret
stringA chave secreta a ser usada ao gerar a assinatura.hash_function
stringO nome da função de hash a ser usada ao gerar a assinatura. As seguintes funções são suportadas:"sha1"
,"sha256"
,"sha512"
.output_format
stringO 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_function
stringO nome da função de hash. As seguintes funções são suportadas:"sha1"
,"sha256"
,"md5"
.input
string ou BSON.BinaryObrigatório. A entrada para a qual você gostaria de gerar um valor de hash.Retorna: Um objeto BSON.Binary
que 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 JSON
módulo global 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çãojsonString
Uma 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çãoobject
Retorna: 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 .
O EJSON é um superconjunto de JSON padrão que adiciona suporte adicional para tipos que estão disponíveis no 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çãoejsonStringstringUma 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çãoobject
documentoUm 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 documentos 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.ObjectId
que codifica um ObjectIdnew BSON.ObjectId(id: string) ParâmetroTipoDescriçãoid
stringOpcional. Uma string de 12 bytes ou uma string de 24 caracteres hexadecimais.Retorna: Um objeto BSON.ObjectId
que codifica a string ObjectId especificada ou uma stringObjectId
gerada se nenhuma tiver sido especificada.Exemplo
const objectId = new BSON.ObjectId("5e58667d902d38559c802b13"); const generatedObjectId = new BSON.ObjectId();
BSON.BSONRegExp
O BSON.BSONRegExp
tipo 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.BSONRegExp
a partir de uma string de expressão regular. Opcionalmente, você pode especificar sinalizadores de configuração.BSON.BSONRegExp(pattern: string, flags: string) ParâmetroTipoDescriçãopattern
stringUma expressão regular padrão.flags
stringOpcional. Um ou mais sinalizadores de expressão regular.Retorna: Um objeto BSON.BSONRegExp
que 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.Binary
a partir de dados representados como uma cadeia hexadecimal.BSON.Binary.fromHex( hexString: string, subType?: number ): BSON.Binary ParâmetroTipoDescriçãohexString
stringUm byte alinhado string de caracteres hexadecimais (0-9 e At).subType
inteiroOpcional. O tipo de dados codificado na string hexadecimal. O valor deve estar no intervalo 0-255 onde0
, 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.Binary
que codifica a string hexadecimal fornecida.Exemplo
const binary = BSON.Binary.fromHex("54657374206d65737361676520706c656173652069676e6f7265=");
BSON.Binary.prototype.toHex()
Converte o objeto
BSON.Binary
em uma string hexadecimal.BSON.Binary.prototype.toHex(): string Retorna: Uma representação de string hexadecimal do objeto BSON.Binary
fornecido.Exemplo
export = function() { const binary = BSON.Binary.fromHex( "54657374206d65737361676520706c656173652069676e6f7265=" ); const hexString = binary.toHex(); return hexString } "54657374206d65737361676520706c656173652069676e6f7265="
BSON.Binary.fromBase64()
Constrói um objeto
BSON.Binary
a partir de dados representados como uma string base64.BSON.Binary.fromBase64( base64String: string, subType?: number ): BSON.Binary ParâmetroTipoDescriçãobase64String
stringUma 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.subType
inteiroOpcional. O tipo de dados codificado na string hexadecimal. O valor deve estar no intervalo 0-255 onde0
, 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.Binary
que codifica a string base64 fornecida.Exemplo
const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU=");
BSON.Binary.prototype.toBase64()
Converte um objeto
BSON.Binary
em 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.Binary
em uma string UTF-8.BSON.Binary.prototype.text(): string Retorna: Uma representação de string UTF-8 do objeto BSON.Binary
fornecido.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.Int32
a partir de um número de 32 bits.BSON.Int32(low32: number): BSON.Int32 ParâmetroTipoDescriçãolow32
númeroUm número de 32 bits.Retorna: Um objeto BSON.Int32
que codifica o número inteiro especificado. Retorna0
se 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.Long
a partir de dois números inteiros de 32 bits que representam os 32 bits inferiores e os 32 bits superiores no número inteiroLong
de 64 bits.ParâmetroTipoDescriçãolow32
inteiroOpcional. Os 32 bits inferiores do número inteiro longo. Esses bits representam os dígitos menos significativos do número.high32
inteiroOpcional. Os 32 bits superiores do número inteiro longo. Esses bits representam os dígitos mais significativos do número.Retorna: Um objeto BSON.Long
que codifica o número inteiro especificado. Retorna0
se nenhum argumento for fornecido.BSON.Long
codifica 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.Double
a partir de um valor decimal de 64 bits.BSON.Double(double: number): BSON.Double ParâmetroTipoDescriçãodouble
númeroUm valor decimal de 64 bits.Retorna: Um objeto BSON.Double
que codifica o duplo especificado. Retorna0
se 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.Decimal128
a partir de uma representação de string de um número decimal.BSON.Decimal128(decimalString: string): BSON.Decimal128 ParâmetroTipoDescriçãodecimalString
stringUma string que representa um número decimal, por exemplo"1234.5678910123456"
.Retorna: Um BSON.Decimal128
que codifica o valor decimal fornecido.Exemplo
const double = BSON.Decimal128.fromString("1234.5678910123456");