web-dev-qa-db-fra.com

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

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.

105
Dmitry Minkovsky

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 .

248
Dmitry Minkovsky

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();
38
steampowered

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.

3
Poyoman

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