我想要使用Mongoose生成一个MongoDB的ObjectId
。有没有办法从Mongoose访问ObjectId
构造函数?
这个问题是关于从头开始生成一个全新的,唯一的
ObjectId
。另一个问题是关于从现有的字符串表示创建一个
ObjectId
。在这种情况下,您已经有一个字符串表示的ID,它可能是唯一的,也可能不是,然后您将其解析为ObjectId
。
require('mongoose').Types
中找到ObjectId
构造函数。以下是一个示例: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 ids。
经过查看mongodb源代码后,我发现他们使用npm的bson库来生成ObjectIDs。
如果你只需要生成一个ObjectID而不想安装整个mongodb/mongoose包,你可以导入更轻量级的bson库:
const bson = require('bson');
new bson.ObjectId(); // 5cabe64dcf0d4447fa60f5e2
注意:还有一个名为 bson-objectid 的npm项目,它甚至更轻。使用 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');
从mongoose导入mongo,使用node-mongodb-native驱动程序。如果您打开包,可以进行验证!
import { mongo } from 'mongoose'
const newId = new mongo.ObjectId()
new mongoose.Types.ObjectId()
。 - Joshua Sherman