Posso especificar manualmente o tipo BSON no driver NodeJS do mongodb? Estou recebendo um erro se usar “$ numberLong”
Aug 18 2020
É assim que estou enquadrando o objeto do documento antes de inseri-lo na coleção
function newTupple(name, email){
return {
email:email,
name:name,
account_status:{
email_verified:{ //I want this in Int64
"$numberLong": `${Date.now()}`
},
activated:false
}
}
}
Então eu insiro como
const new_doc = newTupple("Ninja", "[email protected]")
collection.insertOne(new_doc, (err, result)=>{
if(err){
//err: returns " key $numberLong must not start with '$' "
}
}
Estou usando o pacote npm [email protected]
O que estou fazendo errado? Ou o tipo de dados personalizados não está disponível para JS?
......................................
Atualizar
......................................
Log de erros 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)
Respostas
1 D.SM Aug 18 2020 at 17:24
Você está usando a sintaxe json estendida, que é inadequada para construir gráficos de objetos em um aplicativo. Em vez disso, você deve construir objetos de tipos apropriados.
Por exemplo, veja aqui um exemplo longo.
const BSON = require('bson');
const Long = BSON.Long;
const doc = { long: Long.fromNumber(100) };
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas