你可以这样做:
var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId('4edd40c86762e0fb12000003');
你也可以用这个
const { ObjectId } = require('mongodb');
const _id = ObjectId("4eb6e7e7e9b7f4194e000001");
这是最简单的方法
你可以这样做:
var mongoose = require('mongoose');
var _id = mongoose.mongo.BSONPure.ObjectID.fromHexString("4eb6e7e7e9b7f4194e000001");
编辑:新标准有 fromHexString 而不是 fromString
mongoose.mongo
的一部分。有人可以确认吗?
从评论来看,您正在寻找:
mongoose.mongo.BSONPure.ObjectID.isValid
或者
mongoose.Types.ObjectId.isValid
var mongoose = require('mongoose');
var _id = mongoose.mongo.ObjectId("4eb6e7e7e9b7f4194e000001");
mongoose.Types.ObjectId
和 mongoose.mongo.ObjectId
之间的区别吗? mongoose 的对象属性不同,但它们可能在下面引用相同的方法。请评论 Types
与 mongo
的基础方法。
我无法解决这个方法(诚然我没有搜索很长时间)
mongoose.mongo.BSONPure.ObjectID.fromHexString
如果您的架构期望属性为 ObjectId 类型,则转换是隐式的,至少在 4.7.8 中似乎是这种情况。
但是,您可以使用这样的东西,它提供了更多的灵活性:
function toObjectId(ids) {
if (ids.constructor === Array) {
return ids.map(mongoose.Types.ObjectId);
}
return mongoose.Types.ObjectId(ids);
}
如果您通过 express 和 mongoose 实现 REST API,只需查看以下代码片段。 (添加示例)
....exports.AddSomething = (req,res,next) =>{ const newSomething = new SomeEntity({ _id:new mongoose.Types.ObjectId(), //它自己的 ID somethingName:req.body.somethingName, theForeignKey: mongoose.Types.ObjectId(req.body.theForeignKey)// 如果要传递对象ID }) } ...
希望能帮助到你
如果你想使用模式
const yourSchemma = new Schema({
"customerId": {
type: mongoose.Types.ObjectId,
required: true
}
});
import mongoose from 'mongoose';
似乎不起作用。Argument of type 'import("mongoose").Types.ObjectId' is not assignable to parameter of type 'import("mongoose").Schema.Types.ObjectId'.
。其他人得到这个?