我想ObjectId用 Mongoose 生成一个 MongoDB。有没有办法ObjectId从 Mongoose 访问构造函数?
这个问题是关于从头开始生成一个新的。
ObjectId生成的 ID 是一个全新的通用唯一 ID。另一个问题询问关于
ObjectId从现有字符串表示创建一个。在这种情况下,您已经有一个 ID 的字符串表示形式——它可能是也可能不是普遍唯一的——并且您正在将其解析为ObjectId.
您可以ObjectId在require('mongoose').Types. 这是一个例子:
var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId();
id是一个新生成的ObjectId.
注意:正如Joshua Sherman指出的那样,使用 Mongoose 6,您必须在呼叫前加上new:
var id = new mongoose.Types.ObjectId();
您可以在Mongoose#Types 文档中阅读有关该Types对象的更多信息。
您可以使用 mongoose 像这样创建一个新的 MongoDB ObjectId:
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();
我需要在客户端生成 mongodb id。
在深入研究 mongodb 源代码后,我发现他们使用 npm bsonlib 生成 ObjectID。
如果您只需要生成一个 ObjectID 而无需安装整个 mongodb / mongoose 包,您可以导入较轻的bson库:
const bson = require('bson');
new bson.ObjectId(); // 5cabe64dcf0d4447fa60f5e2
注意:还有一个 npm 项目,名字叫bson-objectid更轻
使用 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');