web-dev-qa-db-fra.com

Comment convertir une chaîne en ObjectId dans le pilote natif de nodejs mongodb?

J'utilise pilote natif de mongodb dans un environnement nodejs et je dois convertir une chaîne id en ObjectId pour l'utiliser dans mon requête de mise à jour, comment puis-je faire cela?

49
Nasser Torabzade

avec ObjectId ( documentation du pilote nodejs )

Lorsque vous avez une chaîne représentant un ObjectId BSON (reçue d'une requête Web, par exemple), vous devez la convertir en une instance ObjectId:

const {ObjectId} = require('mongodb'); // or ObjectID 
// or var ObjectId = require('mongodb').ObjectId if node version < 6

const updateStuff = (id, doc) => {
  // `ObjectId` can throw https://github.com/mongodb/js-bson/blob/0.5/lib/bson/objectid.js#L22-L51, it's better anyway to sanitize the string first
  if (!ObjectId.isValid(s)) {
    return Promise.reject(new TypeError(`Invalid id: ${id}`));
  }
  return collection.findOneAndUpdate(
    {_id: ObjectId(id)}, 
    {$set: doc}, 
    {returnOriginal: false}
  );
};
74
caub
var {ObjectId} = require('mongodb'); // or ObjectID Not Working

comme mentionné par @caubub ne fonctionnera pas pour moi.

Mais lorsque j'utilise var ObjectID = require('mongodb').ObjectID; // convert string to ObjectID dans mongodb, je suis alors en mesure de convertir une chaîne en ObjectId dans le lecteur natif de nodejs mongodb.

Pour une visite de référence à http://mongodb.github.io/node-mongodb-native/2.2/api/ObjectID.html

9
VIKAS KOHLI