¿Puedo especificar manualmente el tipo BSON en el controlador NodeJS de mongodb? Recibo un error si uso "$ numberLong"

Aug 18 2020

Así es como enmarco el objeto del documento antes de insertarlo en la colección

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

Luego lo inserto como

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

Estoy usando el paquete npm [email protected]

¿Qué estoy haciendo mal? ¿O el tipo de datos personalizado no está disponible para JS?

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

Actualizar

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

Registro de errores completo

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)

Respuestas

1 D.SM Aug 18 2020 at 17:24

Está utilizando una sintaxis json extendida que es inapropiada para construir gráficos de objetos en una aplicación. En su lugar, debería estar construyendo objetos de tipos apropiados.

Por ejemplo, vea aquí un ejemplo largo.

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

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