ฉันสามารถระบุประเภท BSON ใน NodeJS Driver ของ mongodb ด้วยตนเองได้หรือไม่ ฉันได้รับข้อผิดพลาดหากใช้“ $ 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) };