Как я могу сгенерировать ObjectId с помощью мангуста?
Я хотел бы создать ObjectId
MongoDB с помощью Mongoose. Есть ли способ получить доступ к конструктору ObjectId
из Mongoose?
-
Этот вопрос о создании нового ObjectId
с нуля. Сгенерированный идентификатор - это совершенно новый универсальный идентификатор.
-
Другой вопрос касается создания ObjectId
из существующего строкового представления. В этом случае у вас уже есть строковое представление идентификатора - он может быть или не быть универсально уникальным - и вы анализируете его в ObjectId
.
Ответы
Ответ 1
Вы можете найти конструктор ObjectId
по require('mongoose').Types
. Вот пример:
var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId();
id
- это недавно сгенерированный ObjectId
.
Вы можете прочитать больше о Types
объекта на Mongoose # Типы документации.
Ответ 2
Вы можете создать новый MongoDB ObjectId
, как это, используя mongoose:
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();
Ответ 3
Мне нужно было генерировать идентификаторы mongodb на стороне клиента.
Покопавшись в исходном коде mongodb, я обнаружил, что они генерируют ObjectID, используя npm bson
lib.
Если вам когда-либо понадобится только сгенерировать ObjectID без установки всего пакета mongodb/mongoose, вы можете импортировать более bson
библиотеку bson
:
const bson = require('bson');
new bson.ObjectId(); // 5cabe64dcf0d4447fa60f5e2
Примечание: есть также проект npm с именем bson-objectid
который еще легче
Ответ 4
С синтаксисом 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');