Puis-je spécifier manuellement le type BSON dans le pilote NodeJS de mongodb? J'obtiens une erreur si j'utilise "$ numberLong"

Aug 18 2020

Voici comment j'encadre l'objet du document avant de l'insérer dans la collection

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

Ensuite, je l'insère comme

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

J'utilise le package npm [email protected]

Qu'est-ce que je fais mal? Ou le type de données personnalisé n'est-il pas disponible pour JS?

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

Mettre à jour

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

Journal des erreurs complet

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)

Réponses

1 D.SM Aug 18 2020 at 17:24

Vous utilisez une syntaxe json étendue qui n'est pas appropriée pour la construction de graphiques d'objets dans une application. Au lieu de cela, vous devez construire des objets de types appropriés.

Par exemple, voyez ici un exemple long.

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

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