Je voudrais générer un MongoDB ObjectId
avec Mongoose. Existe-t-il un moyen d'accéder au constructeur ObjectId
depuis Mongoose?
Cette question concerne générer un nouveaObjectId
à partir de zéro. L'ID généré est un nouvel identifiant unique et universel.
Une autre question concerne la création d'une ObjectId
à partir d'un représentation de chaîne existante. Dans ce cas, vous disposez déjà d'une représentation sous forme de chaîne d'un ID (il peut être ou ne pas être universellement unique) et vous l'analysez dans un ObjectId
.
Vous pouvez trouver le constructeur ObjectId
sur require('mongoose').Types
. Voici un exemple:
var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId();
id
est un ObjectId
nouvellement généré.
Vous pouvez en savoir plus sur l'objet Types
à l'adresse documentation Mongoose # Types .
Vous pouvez créer un nouveau MongoDB ObjectId
comme ceci en utilisant mangouste:
var mongoose = require('mongoose');
var newId = new mongoose.mongo.ObjectId('56cb91bdc3464f14678934ca');
// or leave the id string blank to generate an id with a new hex identifier
var newId2 = new mongoose.mongo.ObjectId();
Je devais générer des identifiants mongodb côté client.
Après avoir fouillé dans le code source de mongodb, j’ai trouvé qu’ils généraient des ObjectID à l’aide de npm bson
lib.
Si vous n'avez jamais besoin que de générer un ObjectID sans installer le package mongodb/mongoose complet, vous pouvez importer la bibliothèque bson
plus légère:
const bson = require('bson');
new bson.ObjectId(); // 5cabe64dcf0d4447fa60f5e2
Remarque: Il existe également un projet npm nommé bson-objectid
encore plus léger.
Avec la syntaxe ES6
import mongoose from "mongoose";
// Generate a new new ObjectId
const newId2 = new mongoose.Types.ObjectId();
// Convert string to ObjectId
const newId = new mongoose.Types.ObjectId('56cb91bdc3464f14678934ca');