202 votes

Comment puis-je générer un ObjectId avec mongoose ?

Je voudrais générer un fichier MongoDB ObjectId avec Mongoose. Existe-t-il un moyen d'accéder au ObjectId constructeur de Mongoose ?

  • Cette question porte sur en générant un nouveau ObjectId à partir de rien. L'identifiant généré est un tout nouvel identifiant universellement unique.

  • Une autre question porte sur la création d'un ObjectId d'un représentation existante de la chaîne de caractères . Dans ce cas, vous disposez déjà d'une représentation sous forme de chaîne de caractères d'un identifiant - qu'il soit ou non universellement unique - et vous l'analysez dans un champ ObjectId .

412voto

dimadima Points 2803

Vous pouvez trouver le ObjectId constructeur sur require('mongoose').Types . Voici un exemple :

var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId();

id est une nouvelle génération de ObjectId .


Note : Comme Joshua Sherman fait remarquer qu'avec Mongoose 6, vous devez préfixer l'appel avec new :

var id = new mongoose.Types.ObjectId();

Vous pouvez en savoir plus sur le Types objet à Documentation sur Mongoose#Types .

63voto

steampowered Points 2179

Vous pouvez créer un nouveau site MongoDB ObjectId comme ça, en utilisant la 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();

29voto

Poyoman Points 70

J'avais besoin de générer des identifiants mongodb du côté client.

Après avoir creusé dans le code source de mongodb, j'ai trouvé qu'ils génèrent des ObjectIDs en utilisant npm. bson lib.

Si jamais vous avez seulement besoin de générer un ObjectID sans installer l'ensemble du paquet mongodb / mongoose, vous pouvez importer le léger bson bibliothèque :

const bson = require('bson');
new bson.ObjectId(); // 5cabe64dcf0d4447fa60f5e2

Note : Il existe également un projet npm nommé bson-objectid être encore plus léger

26voto

MattClimbs Points 37

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');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X