¿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) };