是否有使用猫鼬将字符串转换为节点中的 objectId 的功能?架构指定某物是一个 ObjectId,但是当它从字符串中保存时,mongo 告诉我它仍然只是一个字符串。例如,对象的 _id 显示为objectId("blah")
。
问问题
253178 次
8 回答
515
你可以这样做:
var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId('4edd40c86762e0fb12000003');
于 2011-12-05T23:56:29.380 回答
16
你也可以用这个
const { ObjectId } = require('mongodb');
const _id = ObjectId("4eb6e7e7e9b7f4194e000001");
这是最简单的方法
于 2020-03-18T10:50:28.633 回答
11
你可以这样做:
var mongoose = require('mongoose');
var _id = mongoose.mongo.BSONPure.ObjectID.fromHexString("4eb6e7e7e9b7f4194e000001");
编辑:新标准有 fromHexString 而不是 fromString
于 2011-11-06T20:17:10.800 回答
8
从评论来看,您正在寻找:
mongoose.mongo.BSONPure.ObjectID.isValid
或者
mongoose.Types.ObjectId.isValid
于 2015-01-12T11:22:37.870 回答
7
var mongoose = require('mongoose');
var _id = mongoose.mongo.ObjectId("4eb6e7e7e9b7f4194e000001");
于 2015-08-04T00:33:55.810 回答
5
我无法解决这个方法(诚然我没有搜索很长时间)
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);
}
于 2017-02-03T14:45:38.807 回答
1
如果您通过 express 和 mongoose 实现 REST API,只需查看以下代码片段。(添加示例)
....
exports.AddSomething = (req,res,next) =>{
const newSomething = new SomeEntity({
_id:new mongoose.Types.ObjectId(), //its very own ID
somethingName:req.body.somethingName,
theForeignKey: mongoose.Types.ObjectId(req.body.theForeignKey)// if you want to pass an object ID
})
}
...
希望能帮助到你
于 2020-02-27T01:53:25.437 回答
0
如果你想使用模式
const yourSchemma = new Schema({
"customerId": {
type: mongoose.Types.ObjectId,
required: true
}
});
于 2021-05-01T02:12:20.327 回答