mongodb의 NodeJS 드라이버에서 BSON 유형을 수동으로 지정할 수 있습니까? "$ numberLong"을 사용하면 오류가 발생합니다.

Aug 18 2020

이것은 문서를 컬렉션에 삽입하기 전에 문서의 개체를 프레이밍하는 방법입니다.

function newTupple(name, email){
return {
  email:email,
  name:name,
  account_status:{
    email_verified:{                  //I want this in Int64
        "$numberLong": `${Date.now()}`
    },
    activated:false
  }
}
}

그런 다음 나는 그것을 삽입

const new_doc = newTupple("Ninja", "[email protected]")
collection.insertOne(new_doc, (err, result)=>{
if(err){
    //err: returns " key $numberLong must not start with '$' "
}
}

npm 패키지를 사용하고 있습니다. [email protected]

내가 도대체 ​​뭘 잘못하고있는 겁니까? 아니면 JS에 사용자 정의 데이터 유형을 사용할 수 없습니까?

......................................

최신 정보

......................................

전체 오류 로그

Error: key $numberLong must not start with '$'
    at serializeInto (--------------\node_modules\bson\lib\bson\parser\serializer.js:915:19)
    at serializeObject (--------------\node_modules\bson\lib\bson\parser\serializer.js:347:18)
    at serializeInto (--------------\node_modules\bson\lib\bson\parser\serializer.js:941:17)
    at serializeObject (--------------\node_modules\bson\lib\bson\parser\serializer.js:347:18)
    at serializeInto (--------------\node_modules\bson\lib\bson\parser\serializer.js:941:17)
    at serializeObject (--------------\node_modules\bson\lib\bson\parser\serializer.js:347:18)
    at serializeInto (--------------\node_modules\bson\lib\bson\parser\serializer.js:727:17)
    at serializeObject (--------------\node_modules\bson\lib\bson\parser\serializer.js:347:18)
    at serializeInto (--------------\node_modules\bson\lib\bson\parser\serializer.js:941:17)
    at BSON.serialize (--------------\node_modules\bson\lib\bson\bson.js:64:28)

답변

1 D.SM Aug 18 2020 at 17:24

응용 프로그램에서 개체 그래프를 구성하는 데 부적절한 확장 json 구문을 사용하고 있습니다. 대신 적절한 유형의 개체를 구성해야합니다.

예를 들어 긴 예는 여기 를 참조 하십시오 .

const BSON = require('bson');
const Long = BSON.Long;

const doc = { long: Long.fromNumber(100) };