JRP*_*ete 147 mongoose mongodb node.js
是否有使用mongoose将字符串转换为节点中的objectId的函数?模式指定某些东西是ObjectId,但是当它从字符串中保存时,mongo告诉我它仍然只是一个字符串.例如,对象的_id显示为objectId("blah").
Kev*_*nte 363
你可以这样做:
var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId('4edd40c86762e0fb12000003');
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
var mongoose = require('mongoose');
var _id = mongoose.mongo.BSONPure.ObjectID.fromHexString("4eb6e7e7e9b7f4194e000001");
Run Code Online (Sandbox Code Playgroud)
编辑:新标准有fromHexString而不是fromString
小智 9
你也可以使用这个
const { ObjectId } = require('mongodb');
const _id = ObjectId("4eb6e7e7e9b7f4194e000001");
Run Code Online (Sandbox Code Playgroud)
这是最简单的方法
对于新版本,将“新”关键字添加到所选答案中是有效的,如下所示
var mongoose = require("mongoose");
var _id = new mongoose.Types.ObjectId("64b0ee2c189286a5abc6b4ba");
Run Code Online (Sandbox Code Playgroud)
从评论来看,您正在寻找:
mongoose.mongo.BSONPure.ObjectID.isValid
Run Code Online (Sandbox Code Playgroud)
要么
mongoose.Types.ObjectId.isValid
Run Code Online (Sandbox Code Playgroud)
var mongoose = require('mongoose');
var _id = mongoose.mongo.ObjectId("4eb6e7e7e9b7f4194e000001");
Run Code Online (Sandbox Code Playgroud)
我无法解决此方法(诚然我没有搜索很长时间)
mongoose.mongo.BSONPure.ObjectID.fromHexString
Run Code Online (Sandbox Code Playgroud)
如果您的架构期望属性为 ObjectId 类型,则转换是隐式的,至少在 4.7.8 中似乎是这种情况。
但是,您可以使用类似的东西,这会提供更多的灵活性:
function toObjectId(ids) {
if (ids.constructor === Array) {
return ids.map(mongoose.Types.ObjectId);
}
return mongoose.Types.ObjectId(ids);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
151027 次 |
| 最近记录: |