Làm cách nào tôi có thể tạo ObjectId với cầy mangut?


132

Tôi muốn tạo MongoDB ObjectIdbằng Mongoose. Có cách nào để truy cập vào ObjectIdconstructor từ Mongoose không?

  • Câu hỏi này là về việc tạo ra một cái mới ObjectId từ đầu. ID được tạo là một ID hoàn toàn mới.

  • Một câu hỏi khác hỏi về việc tạo một ObjectIdtừ một đại diện chuỗi hiện có . Trong trường hợp này, bạn đã có một chuỗi đại diện của ID ID, nó có thể hoặc không phải là duy nhất trên toàn cầu và bạn đang phân tích nó thành một ObjectId.

Câu trả lời:


290

Bạn có thể tìm thấy các nhà ObjectIdxây dựng trên require('mongoose').Types. Đây là một ví dụ:

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

idlà một mới được tạo ra ObjectId.

Bạn có thể đọc thêm về Typesđối tượng tại tài liệu Mongoose # Type .


4
Làm thế nào bạn có thể chắc chắn rằng điều này thực sự độc đáo? Mongoose có kiểm tra trước không?
R01010010

1
@ R01010010 kiểm tra xem chúng được tạo như thế nào (Google). Không có kiểm tra nhưng đó là xác suất
Dmitry Minkovsky

13
Nếu bạn tạo 16777216 trong vòng một giây trên cùng một máy, thì có thể bạn sẽ nhận được một bản sao. :)
joeytwiddle

Khắc phục: Nếu bạn tạo 16777216 trong vòng một mili giây trên cùng một máy, thì có thể bạn sẽ nhận được một bản sao. 😁
trốn tránh Shadows

43

Bạn có thể tạo MongoDB mới ObjectIdnhư thế này bằng cách sử dụng 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();

13

Tôi cần phải tạo id mongodb ở phía máy khách.

Sau khi đào sâu vào mã nguồn mongodb, tôi thấy họ tạo ObjectID bằng npm bsonlib.

Nếu bạn chỉ cần tạo ObjectID mà không cần cài đặt toàn bộ gói mongodb / mongoose, bạn có thể nhập bsonthư viện nhẹ hơn :

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

Lưu ý: Ngoài ra còn có một dự án npm có tên bson-objectidlà thậm chí nhẹ hơn


6

Với cú pháp 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');
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.