Firavun faresi ile nasıl bir ObjectId oluşturabilirim?


133

ObjectIdMongoose ile bir MongoDB oluşturmak istiyorum . ObjectIdYapıcıya Mongoose'dan erişmenin bir yolu var mı ?

  • Bu soru sıfırdan yeni bir şey ObjectIdüretmekle ilgili. Oluşturulan kimlik yepyeni, evrensel olarak benzersiz bir kimliktir.

  • Başka bir soru, mevcut bir dizgi temsilindenObjectId bir oluşturmayı sorar . Bu durumda, bir kimliğin dize temsiline zaten sahipsiniz - evrensel olarak benzersiz olabilir veya olmayabilir - ve onu bir .ObjectId

Yanıtlar:


291

Sen bulabilirsiniz ObjectIdüzerinde yapıcı require('mongoose').Types. İşte bir örnek:

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

idyeni oluşturulmuş bir ObjectId.

Mongoose # Types belgelerindeTypes nesne hakkında daha fazla bilgi edinebilirsiniz .


4
bunun gerçekten benzersiz olduğundan nasıl emin olabilirsiniz? daha önce herhangi bir çek yaptı mı?
R01010010

1
@ R01010010 Bunların nasıl oluşturulduğunu kontrol edin (Google). Kontrol yok ama olasılıklı
Dmitry Minkovsky

13
Aynı makinede bir saniye içinde 16777216 oluşturursanız, muhtemelen bir kopya alırsınız. :)
joeytwiddle

Düzeltme: Aynı makinede bir milisaniye içinde 16777216 oluşturursanız, büyük olasılıkla bir kopya alırsınız. 😁
Evading Shadows

43

Firavun faresini ObjectIdkullanarak bunun gibi yeni bir MongoDB oluşturabilirsiniz :

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

14

İstemci tarafında mongodb kimlikleri oluşturmam gerekiyordu.

Mongodb kaynak kodunu kazdıktan sonra npm bsonlib kullanarak ObjectID'ler ürettiklerini buldum .

Tüm mongodb / mongoose paketini kurmadan yalnızca bir ObjectID oluşturmanız gerekirse, daha hafif bsonkitaplığı içe aktarabilirsiniz :

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

Not: bson-objectidDaha hafif adlı bir npm projesi de vardır.


6

ES6 sözdizimi ile

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');
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.