Global Modules
이 페이지의 내용
모든 함수 는 일반적인 데이터 변환, 인코딩 및 처리 작업을 지원하는 내장 글로벌 모듈에 액세스할 수 있습니다. 각 모듈에 특정한 글로벌 변수를 통해 함수 소스 코드의 모듈에 액세스할 수 있습니다.
팁
다음도 참조하세요.
이러한 글로벌 모듈은 Node.js 내장 모듈과 동일 하지 않습니다 . 가져오는 방법 등 지원되는 Node.js 모듈에 대한 자세한 내용은 기본 제공 모듈 지원을 참조하세요.
모듈 | 설명 |
---|---|
JSON Web Token을 읽고 쓰는 메서드. | |
해시 및 서명과 같은 암호화 알고리즘을 구현하는 메서드입니다. | |
의 string 과 객체 표현을 변환하는 메서드 JSON 데이터. | |
확장 JSON string 데이터의 과 객체 표현 간에 변환하는 메서드입니다. | |
바이너리 JSON 을 생성하는 메서드 다양한 BSON 데이터 유형과 인코딩 간에 변환할 수 있습니다. |
유틸리티
JSON Web Tokens (utils.jwt
)
JSON Web Token 을 생성하고 읽을 수 utils.jwt
있습니다. 인터페이스를 사용합니다.
메서드 | 설명 |
---|---|
지정된 payload , signingMethod 및 secret 에 대해 인코딩된 JSON Web Token 문자열을 생성합니다. | |
JSON Web Token 문자열의 payload 를 디코딩합니다. |
utils.jwt.encode()
지정된
signingMethod
및secret
를 기반으로payload
에 대해 인코딩된 JSON Web Token 문자열을 생성합니다.utils.jwt.encode( signingMethod: string, payload: object, secret: string, customHeaderFields: object ): string Parameter유형설명signingMethod
문자열JSON web token을 인코딩할 때 사용할 암호화 알고리즘이다. Atlas App Services는 다음과 같은 JWT 서명 방법을 지원합니다.
서명 방법설명"HS256"
SHA-256을 사용하는 EMAC"HS384"
SHA-384를 사용하는 EMAC"HS512"
SHA-512를 사용하는 EMAC"RS256"
SHA-256을 사용하는 RSASSA-PKCS1-v1_5"RS384"
SHA-384를 사용하는 RSASSA-PKCS1-v1_5"RS512"
SHA-512를 사용하는 RSASSA-PKCS1-v1_5"ES256"
P-256 및 SHA-256을 사용하는 ECDSA"ES384"
P-384 및 SHA-384를 사용하는 ECDSA"ES512"
P-512 및 SHA-512를 사용하는 ECDSA"PS256"
SHA-256 및 MGF1을 SHA-256과 함께 사용하는 RSASSA-PSS"PS384"
SHA-384 및 MGF1을 SHA-384와 함께 사용하는 RSASSA-PSS"PS512"
SHA-512 및 MGF1을 SHA-512와 함께 사용하는 RSASSA-PSSpayload
객체토큰의 클레임 및 추가 관련 데이터를 지정하는 JSON 객체입니다.secret
문자열App Services가 토큰에 서명하는 데 사용하는 비밀 문자열입니다. 문자열 값은 사용하는 서명 방법에 따라 달라집니다.
서명 방법설명"HS256"
"HS384"
"HS512"
임의의 문자열입니다."RS256"
"RS384"
"RS512"
PKCS#8 형식의 RSA-SHA 비공개 키입니다."PS256"
"PS384"
"PS512"
PKCS#8 형식의 RSA-PSS 비공개 키입니다."ES256"
"ES384"
"ES512"
ECDSA PKCS#8 형식의 비공개 키입니다.customHeaderFields
객체JSON JSON 웹 토큰의 JOSE 헤더 에 포함할 추가 필드를 지정하는 객체입니다.반환합니다: 제공된 payload
에 대해 인코딩된 JSON Web Token 문자열입니다.예시
다음 JSON web token 클레임 객체를 가정해 보겠습니다.
{ "sub": "1234567890", "name": "Joe Example", "iat": 1565721223187 } utils.jwt.encode()
을(를) 호출하여 클레임 객체를 JSON web token 문자열로 인코딩할 수 있습니다. 다음 함수는HS512
서명 메서드와 시크릿"SuperSecret"
을 사용하여 JSON web token를 인코딩합니다.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()
제공된 JSON Web Token 문자열의
payload
를 디코딩합니다.key
값은 JSON web token 문자열을 인코딩하는 데 사용된 시크릿 값과 일치해야 합니다.utils.jwt.decode( jwtString: string, key: string, returnHeader: boolean ): object Parameter유형설명jwtString
문자열비밀 값으로 서명된 클레임 집합을 인코딩하는 JSON Web Token 문자열입니다.key
문자열App Services에서 토큰 서명을 확인하는 데 사용하는 문자열입니다. 문자열 값은 사용하는 서명 방법에 따라 달라집니다.
서명 방법설명"HS256"
"HS384"
"HS512"
토큰에 서명하는 데 사용된 임의의 문자열입니다."RS256"
"RS384"
"RS512"
토큰 서명에 사용된 비공개 키에 해당하는 RSA-SHA 공개 키입니다."PS256"
"PS384"
"PS512"
토큰 서명에 사용된 비공개 키에 해당하는 RSA-PSS 공개 키입니다."ES256"
"ES384"
"ES512"
ECDSA 토큰 서명에 사용된 비공개 키에 해당하는 공개 키입니다.returnHeader
부울인true
경우 JSON 웹 토큰의 JOSE 헤더 를 반환합니다. 디코딩된 페이로드에 추가합니다.acceptedSigningMethods
string[]선택 사항. 허용되는 서명 메서드의 배열입니다. 예:["PS256", "HS256"]
. 알려진 JSON 웹 토큰 보안 취약점 을 방지하려면 이 인수를 포함해야 합니다. .반환합니다: returnHeader
가false
인 경우, 디코딩된 EJSON 페이로드를 반환합니다.이 인 경우 JOSE 헤더
returnHeader
true
가 포함된 객체를 반환합니다. 필드에header
입력하고 필드에 디코딩된 EJSON 페이로드를 입력합니다.payload
{ "header": { "<JOSE Header Field>": <JOSE Header Value>, ... }, "payload": { "<JWT Claim Field>": <JWT Claim Value>, ... } } 예시
서명된 다음 JSON web token 문자열을 가정해 보겠습니다.
"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvZSBTY2htb2UiLCJpYXQiOjE1NjU3MjEyMjMxODd9.-QL15ldu2BYuJokNWT6YRiwZQIiIpvq6Kyv-C6qslNdNiUVxo8zqLJZ1iEkNf2yZKMIrQuMCtIC1tzd2H31AxA" JSON web token는 시크릿 값
"SuperSecret"
과 함께HS512
서명 메서드를 사용하여 서명되었습니다. JWT의 클레임 객체utils.jwt.decode()
를 디코딩할 수 있습니다. 다음 함수는 JSON web token 문자열을 EJSON 객체로 디코딩합니다.exports = function(jwtString) { const key = "SuperSecret"; return utils.jwt.decode(jwtString, key, false, ["HS512"]); } { "sub": "1234567890", "name": "Joe Example", "iat": { "$numberDouble": 1565721223187 } }
암호화(utils.crypto
)
utils.crypto
인터페이스에서 암호화 알고리즘을 사용하여 데이터를 암호화, 해독, 서명 및 확인할 수 있습니다.
메서드 | 설명 |
---|---|
특정 암호화 방법과 키를 사용하여 주어진 텍스트 문자열에서 암호화된 텍스트 문자열을 생성합니다. | |
특정 암호화 방법과 키를 사용하여 제공된 텍스트 문자열을 해독합니다. | |
개인 키를 사용하여 지정된 메시지에 대한 암호화적으로 고유한 서명을 생성합니다. | |
서명이 지정된 메시지 및 공개 키에 유효한지 확인합니다. | |
HMAC 를 생성합니다. 지정된 입력 및 시크릿에서 서명합니다. | |
주어진 입력 및 해시 함수에 대한 해시 값을 생성합니다. |
utils.crypto.encrypt()
지정된 암호화 방법과 키를 사용하여 제공된 텍스트에서 암호화된 텍스트 문자열을 생성합니다.
utils.crypto.encrypt( encryptionType: string, message: string, key: string ): BSON.Binary Parameter유형설명encryptionType
문자열메시지를 암호화할 암호화 유형입니다. 지원되는 암호화 유형은 다음과 같습니다.
AES 암호화 (
"aes"
)
message
문자열암호화하려는 텍스트 문자열입니다.key
문자열텍스트를 암호화하는 데 사용되는 암호화 키입니다. 사용해야 하는 키는 암호화 방법에 따라 다릅니다.
암호화 유형암호화 키AES16바이트, 24바이트 또는 32바이트 임의 문자열반환합니다: 지정된 암호화 유형 및 키로 암호화된 텍스트 이 BSON 포함된 바이너리 객체입니다. string 예시
다음 32바이트 AES 암호화 키를 포함하는
aesEncryptionKey
라는 값 을 정의했다고 가정해 보겠습니다."603082712271C525E087BD999A4E0738" 이 AES 키를 사용하면 다음 함수를 사용하여 메시지를 base64 문자열로 암호화할 수 있습니다.
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()
지정된 암호화 유형 및 키를 사용하여 제공된 텍스트 문자열을 해독합니다. 암호화 유형과 키가 암호화에 사용된 것과 동일한 경우 암호화되지 않은 원본 텍스트가 반환됩니다.
utils.crypto.decrypt( encryptionType: string, encryptedMessage: BSON.Binary, key: string ): BSON.Binary Parameter유형설명encryptionType
문자열제공된 텍스트를 암호화하는 데 사용된 암호화 유형입니다. 지원되는 암호화 유형은 다음과 같습니다.
AES 암호화 (
"aes"
)
encryptedMessage
해독하려는 암호화된 텍스트 문자열을 인코딩하는 BSON Binary입니다.key
문자열텍스트를 해독하는 데 사용되는 암호화 키입니다. 사용해야 하는 키는 암호화 유형에 따라 다릅니다.
암호화 유형암호화 키AES16바이트, 24바이트 또는 32바이트 임의 문자열반환합니다: 해독된 메시지가 포함된 BSON 바이너리 객체입니다. 제공된 암호화된 메시지가 지정된 방법 및 키로 암호화된 경우 해독된 메시지는 원본 메시지와 동일합니다.
예시
다음 32바이트 AES 암호화 키를 포함하는
aesEncryptionKey
라는 값 을 정의했다고 가정해 보겠습니다."603082712271C525E087BD999A4E0738" 이 AES 키를 사용하면 다음 함수를 사용하여 동일한 키로 암호화된 모든 base64 문자열을 해독할 수 있습니다.
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()
개인 키를 사용하여 메시지에 대한 암호화적으로 고유한 서명을 생성합니다. 해당 공개 키로 서명을 확인하여 서명자가 개인 키에 액세스할 수 있고 서명된 이후 메시지 내용이 변경되지 않았는지 확인할 수 있습니다.
utils.crypto.sign( encryptionType: string, message: string, privateKey: string, signatureScheme: string ): BSON.Binary Parameter유형설명encryptionType
문자열개인/공개 키 쌍을 생성하는 데 사용된 암호화 유형입니다. 지원되는 암호화 유형은 다음과 같습니다.
RSA 암호화 (
"rsa"
)
message
문자열서명하려는 텍스트 문자열입니다.privateKey
문자열지정된 암호화 유형으로 생성된 비공개 키입니다.
중요
키 형식
모든 RSA 키가 동일한 형식을 사용하는 것은 아닙니다. Atlas App Services는 표준 PKCS# 를 준수하는 비공개 키로만1 메시지에 서명할 수 있습니다. 형식. 이 형식의 개인 키에는
-----BEGIN RSA PRIVATE KEY-----
헤더가 있습니다.다음 shell 스크립트를 사용하여 유효한 RSA 비공개/공개 키 쌍을 생성하고 각 키를 자체 텍스트 파일에 저장할 수 있습니다.
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
문자열반환합니다: BSON.Binary 암호화 서명 지정된 비공개 키를 사용하여 서명된 메시지에 해당합니다. 예시
다음 RSA 비공개 키를 포함하는
rsaPrivateKey
이라는 값 을 정의했다고 가정해 보겠습니다.-----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----- 이 RSA 키를 사용하면 다음 기능을 사용하여 메시지에 서명할 수 있습니다.
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()
제공된 서명이 지정된 메시지 및 공개 키에 유효한지 확인합니다.
서명이 유효하면 서명자가 해당 개인 키에 액세스할 수 있고 서명된 이후 메시지 내용이 변경되지 않았음을 보장합니다.
utils.crypto.verify( encryptionType: string, message: string, publicKey: string, signature: BSON.Binary, signatureScheme: string ): boolean Parameter유형설명encryptionType
문자열개인/공개 키 쌍을 생성하는 데 사용된 암호화 유형입니다. 지원되는 암호화 유형은 다음과 같습니다.
RSA 암호화 (
"rsa"
)
message
문자열서명을 확인하려는 텍스트 문자열입니다. 서명이 유효한 경우 서명된 정확한 메시지입니다.publicKey
문자열서명을 확인하려는 공개 키입니다. 서명이 유효한 경우 이는 메시지에 서명하는 데 사용된 개인 키의 해당 공개 키입니다.
중요
키 형식
모든 RSA 키가 동일한 형식을 사용하는 것은 아닙니다. Atlas App Services는 표준 PKCS# 를 준수하는 RSA 키가1 있는 서명만 확인할 수 있습니다. 형식. 이 형식의 공개 키에는
-----BEGIN RSA PUBLIC KEY-----
헤더가 있습니다.다음 shell 스크립트를 사용하여 유효한 RSA 비공개/공개 키 쌍을 생성하고 각 키를 자체 텍스트 파일에 저장할 수 있습니다.
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
확인하려는 서명입니다.signatureScheme
문자열반환합니다: true
인 경우 서명이 제공된 메시지 및 공개 키에 대해 유효한지 여부를 나타내는 부울입니다.예시
BSON.Binary 형식의 서명이 포함된 메시지를 받았으며, 해당 메시지가 발신자의 RSA 공개 키에 해당하는 비공개 키로 서명되었는지 확인하려고 합니다.
-----BEGIN RSA PUBLIC KEY----- MIGJAoGBANWwSOx7ao7i/enxEz+rxGrOWhzWV57fjKhi4pnZx6a5S7wmlzsoU7X5 omld1tI9k2EYt0A2fx/agwhnVH2GAQlGf9Cb9jILhE9MaDnmfMepKXOI1kkxDIRT JTuTHn4pvqS2CiOGTyhxlGSiszwUTKWSsrOBKt9rLQ9xYc+wqWZ5AgMBAAE= -----END RSA PUBLIC KEY----- 이 RSA 키를 사용하면 다음 함수를 사용하여 해당 개인 키로 서명된 메시지를 확인할 수 있습니다.
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()
HMAC 를 생성합니다. 제공된 입력 및 시크릿에서 서명합니다. 이는 서명된 요청이 필요한 타사 HTTP 서비스와 통신할 때 유용합니다.
utils.crypto.hmac( input: string, secret: string, hash_function: string, output_format: string ): string Parameter유형설명input
문자열서명을 생성하려는 입력입니다.secret
문자열서명을 생성할 때 사용할 시크릿 키입니다.hash_function
문자열서명을 생성할 때 사용할 해싱 함수의 이름입니다. 지원되는 함수는"sha1"
,"sha256"
,"sha512"
입니다.output_format
문자열생성된 서명의 형식입니다. 16진수 문자열의 경우"hex"
, Base64 문자열의 경우"base64"
중 하나일 수 있습니다.반환합니다: output_format
으로 지정된 형식의 입력 서명입니다.예시
다음 함수는 sha256 서명을 기본 64 문자열로 생성합니다.
exports = function() { const signature = utils.crypto.hmac( "hello!", "super-secret", "sha256", "base64" ) return signature } "SUXd6PRMaTXXgBGaGsIHzaDWgTSa6C3D44lRGrvRak0="
utils.crypto.hash()
지정된 해시 함수를 사용하여 제공된 입력에 대한 해시 값을 생성합니다.
utils.crypto.hash( hash_function: string, input: string | BSON.Binary ): BSON.Binary Parameter유형설명hash_function
문자열해싱 함수의 이름입니다. 지원되는 함수는"sha1"
,"sha256"
,"md5"
입니다.input
문자열 또는 BSON.Binary필수입니다. 해시 값을 생성하려는 입력입니다.반환합니다: 지정된 해싱 함수에서 생성된 제공된 입력에 대한 해시 값을 인코딩하는 BSON.Binary
객체입니다.예시
다음 함수는 sha256을 사용하여 입력 문자열을 해시합니다.
exports = function() { return utils.crypto.hash( "sha256", "hello!" ) } "zgYJL7lI2f+sfRo3bkBLJrdXW8wR7gWkYV/vT+w6MIs="
JSON(JavaScript 객체 표기법)
JSON
글로벌 모듈은 JSON 메서드 를 제공합니다. 표준 JavaScript 객체를 직렬화 및 역직렬화합니다.
메서드 | 설명 |
---|---|
직렬화된 JSON 문자열을 JavaScript 객체로 구문 분석합니다. | |
JavaScript 객체를 JSON 문자열로 직렬화합니다. |
JSON.parse()
제공된 JSON 문자열을 구문 분석하여 JavaScript 객체로 변환합니다.
JSON.parse(jsonString: string): object Parameter유형설명jsonString
표준 JSON 객체의 직렬화된 문자열 표현입니다.반환합니다: 제공된 JSON 문자열에서 생성된 표준 JavaScript 객체입니다. 예시
다음 함수는 직렬화된 JSON 문자열을 이에 상응하는 JavaScript 객체로 변환합니다.
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()
제공된 JavaScript 객체를 JSON 문자열로 직렬화합니다.
JSON.stringify(json: object): string Parameter유형설명object
반환합니다: 제공된 JavaScript 객체의 문자열 표현입니다. 예시
다음 함수는 JavaScript 객체를 동등한 JSON 문자열로 직렬화합니다.
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)
EJSON
글로벌 모듈은 JSON 과 유사하지만 추가 확장 JSON 유형 정보를 유지합니다.
EJSON은 표준 JSON의 상위 집합으로,BSON 에서 사용할 수 있지만 JSON 사양 에는 포함되지 않은 유형에 대한 추가 지원을 추가합니다. .
메서드 | 설명 |
---|---|
직렬화된 확장 JSON 문자열을 JavaScript 객체로 구문 분석합니다. | |
JavaScript 객체를 ExtendedJSON 문자열로 직렬화합니다. |
EJSON.parse()
제공된 EJSON string 을 구문 분석하여 JavaScript 객체로 변환합니다.
EJSON.parse(ejsonString: string): object Parameter유형설명ejsonString문자열확장 JSON 객체의 직렬화된 문자열 표현입니다.반환합니다: 제공된 EJSON 문자열의 JavaScript 객체 표현입니다. 예시
다음 함수는 직렬화된 EJSON 문자열을 이에 상응하는 JavaScript 객체로 변환합니다.
exports = function() { const ejsonString = `{ "answer": { "$numberLong": "42" }, "submittedAt": { "$date": { "$numberLong": "1583167607977" } } }`; return EJSON.parse(ejsonString); } { "answer": { "$numberLong": "42" }, "submittedAt": { "$date": { "$numberLong": "1583167607977" } } }
EJSON.stringify()
제공된 JavaScript 객체를 EJSON string 로 직렬화합니다.
EJSON.stringify(json: object): string Parameter유형설명object
문서EJSON 객체입니다. 객체에 BSON types가 포함될 수 있습니다.반환합니다: 제공된 EJSON 객체의 문자열 표현입니다. 예시
다음 함수는 JavaScript 객체를 동등한 EJSON 문자열로 직렬화합니다.
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)
BSON
글로벌 모듈을 사용하면 유형이 지정된 BSON 객체를 생성하고 이를 다양한 데이터 형식 및 인코딩 간에 변환할 수 있습니다.
BSON 또는 바이너리 JSON은 MongoDB 데이터베이스에서 내부적으로 사용되는 데이터 형식입니다. 표준 JSON 유형의 상위 집합을 사용하여 문서 데이터 구조의 이진 표현을 인코딩합니다. 자세한 내용은 BSON 사양을 참조하세요.
유형 | 설명 |
---|---|
ObjectId 값을 나타냅니다. | |
정규 표현식을 나타냅니다. | |
이진 데이터 구조를 나타냅니다. | |
다른 모든 값보다 높게 비교되는 값을 나타냅니다. | |
다른 모든 값보다 낮게 비교되는 값을 나타냅니다. | |
부호 있는 32비트 정수를 나타냅니다. | |
부호 있는 64비트 정수를 나타냅니다. | |
64비트 부동 소수점 숫자를 나타냅니다. | |
128비트 부동 소수점 숫자를 나타냅니다. |
BSON.ObjectId
BSON.ObjectId
유형은 12바이트 MongoDB ObjectId
식별자를 나타냅니다.
BSON.ObjectId()
ObjectId를 인코딩하는
BSON.ObjectId
객체를 생성합니다.new BSON.ObjectId(id: string) Parameter유형설명id
문자열선택 사항. 12바이트 문자열 또는 24자의 16진수 문자열입니다.반환합니다: 지정된 ObjectId string 또는 지정된 문자열이 없는 경우 생성된 ObjectId
string 을 인코딩하는BSON.ObjectId
객체입니다.예시
const objectId = new BSON.ObjectId("5e58667d902d38559c802b13"); const generatedObjectId = new BSON.ObjectId();
BSON.BSONRegExp
BSON.BSONRegExp
유형은 정규 표현식 을 나타냅니다. . BSON.BSONRegExp
객체를 $regex
쿼리 연산자와 함께 사용하여 MongoDB 컬렉션에서 정규 표현식 쿼리를 수행할 수 있습니다.
BSON.BSONRegExp()
정규 표현식 문자열에서
BSON.BSONRegExp
객체를 생성합니다. 선택적으로 구성 플래그를 지정할 수 있습니다.BSON.BSONRegExp(pattern: string, flags: string) Parameter유형설명pattern
문자열정규 표현식 패턴.flags
문자열선택 사항. 하나 이상의 정규 표현식 플래그입니다.반환합니다: 제공된 정규 표현식 패턴과 플래그를 인코딩하는 BSON.BSONRegExp
객체입니다.예시
const regex = BSON.BSONRegExp("the great", "ig");
BSON.Binary
BSON.Binary
유형은 바이너리 인코딩 데이터 문자열을 나타냅니다.
BSON.Binary.fromHex()
16진수 문자열로 표시된 데이터에서
BSON.Binary
객체를 생성합니다.BSON.Binary.fromHex( hexString: string, subType?: number ): BSON.Binary Parameter유형설명hexString
문자열바이트 정렬 string 16진수 (0-9 및 AF).subType
integer선택 사항. 16진수 string 로 인코딩된 데이터 유형입니다. 값은 0-255 범위에 있어야 하며, 여기서0
기본값은 일반 바이너리를 나타냅니다. 지원되는 하위 유형의 전체 목록은 BSON 사양을 참조하세요.반환합니다: 제공된 16진수 문자열을 인코딩하는 BSON.Binary
객체입니다.예시
const binary = BSON.Binary.fromHex("54657374206d65737361676520706c656173652069676e6f7265=");
BSON.Binary.prototype.toHex()
BSON.Binary
객체를 16진수 문자열로 변환합니다.BSON.Binary.prototype.toHex(): string 반환합니다: 제공된 BSON.Binary
객체의 16진수 문자열 표현입니다.예시
export = function() { const binary = BSON.Binary.fromHex( "54657374206d65737361676520706c656173652069676e6f7265=" ); const hexString = binary.toHex(); return hexString } "54657374206d65737361676520706c656173652069676e6f7265="
BSON.Binary.fromBase64()
base64 문자열로 표시되는 데이터에서
BSON.Binary
객체를 생성합니다.BSON.Binary.fromBase64( base64String: string, subType?: number ): BSON.Binary Parameter유형설명base64String
문자열base64로 인코딩된 문자의 문자열입니다.
참고
문자열 패딩
base64로 인코딩된 문자열은 문자열 끝에 하나 또는 두 개의 등호(
=
)('패딩'이라고 함)를 포함해야 합니다.BSON.Binary.fromBase64()
은 패딩되지 않은 문자열을 지원하지 않습니다.subType
integer선택 사항. 16진수 string 로 인코딩된 데이터 유형입니다. 값은 0-255 범위에 있어야 하며, 여기서0
기본값은 일반 바이너리를 나타냅니다. 지원되는 하위 유형의 전체 목록은 BSON 사양을 참조하세요.반환합니다: 제공된 base64 문자열을 인코딩하는 BSON.Binary
객체입니다.예시
const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU=");
BSON.MaxKey
BSON.MaxKey
유형은 다른 모든 BSON 값보다 높게 비교되는 값을 나타냅니다.
예시
await collection.findOne({ date: { $lt: BSON.MaxKey } });
BSON.MinKey
BSON.MinKey
유형은 비교되는 다른 모든 BSON 값보다 낮게 비교되는 값을 나타냅니다.
예시
await collection.findOne({ date: { $gt: BSON.MinKey } });
BSON.Int32
BSON.Int32
유형은 부호 있는 32비트 정수를 나타냅니다.
BSON.Long
BSON.Long
유형은 부호 있는 64비트 정수를 나타냅니다.
BSON.Long(low32, high32)
BSON.Long(low32: number, high32: number): BSON.Long 64비트
Long
정수의 하위 32비트와 상위 32비트를 나타내는 두 개의 32비트 정수로BSON.Long
객체를 생성합니다.Parameter유형설명low32
integer선택 사항. 긴 정수의 하위 32비트입니다. 이 비트는 숫자의 최하위 자릿수를 나타냅니다.high32
integer선택 사항. 긴 정수의 상위 32비트입니다. 이 비트는 숫자의 최상위 자릿수를 나타냅니다.반환합니다: 지정된 정수를 인코딩하는 BSON.Long
객체입니다. 인수를 제공하지 않으면0
을(를) 반환합니다.BSON.Long
다음 공식을 사용하여 인코딩합니다.(high32 * (2**32)) + low32 예시
const long = BSON.Long(600206158, 342);
BSON.Double
BSON.Double
유형은 64비트(8바이트) 부동 소수점 숫자를 나타냅니다.
중요
돈을 위해 Decimal128 사용
BSON.Double
부동 소수점 반올림 오류가 발생할 수 있으므로 소수점 값이 정확히 반올림되어야 하는 사용 사례에는 권장되지 않습니다. 금융 데이터. 이러한 경우에는 대신 BSON.Decimal128 을(를) 사용하세요.
BSON.Decimal128
BSON.Decimal128
유형은 128비트(16바이트) 부동 소수점 숫자를 나타냅니다. 이 유형은 소수점 값이 정확히 반올림되어야 하는 사용 사례에 사용됩니다. 금융 데이터.
BSON.Decimal128.fromString(decimalString)
10진수의 문자열 표현에서
BSON.Decimal128
를 생성합니다.BSON.Decimal128(decimalString: string): BSON.Decimal128 Parameter유형설명decimalString
문자열10진수를 나타내는 문자열(예:"1234.5678910123456"
.반환합니다: 제공된 10진수 값을 인코딩하는 BSON.Decimal128
입니다.예시
const double = BSON.Decimal128.fromString("1234.5678910123456");