乐闻世界logo
搜索文章和话题

Mongoose 如何将字符串转换为 objectID ?

9 个月前提问
5 个月前修改
浏览次数89

6个答案

1
2
3
4
5
6

在 Node.js 中,如果您使用的是 Mongoose.js 来与 MongoDB 数据库交互,将字符串转换为ObjectId对象是一项常见的任务,特别是当您需要用字符串形式的 ID 对数据库中的文档进行引用或查询时。Mongoose.js 中内置了一个 ObjectId 类型,它是 MongoDB 官方的 bson 库的一部分。

假设您得到了一个字符串形式的 ID,如 '5f8d0d55b54764421b7156d9',并希望将其转换为 ObjectId 对象,您可以按照以下步骤操作:

  1. 首先,确保您已经安装了 mongoose:

    bash
    npm install mongoose
  2. 在您的 Node.js 代码中,引入 mongoose 包,并使用 mongoose.Types.ObjectId 来创建一个新的 ObjectId 实例:

    javascript
    const mongoose = require('mongoose'); // 假设我们有一个字符串形式的 ID const idString = '5f8d0d55b54764421b7156d9'; // 使用 mongoose 的 Types.ObjectId 方法来转换 const objectId = mongoose.Types.ObjectId(idString); console.log(objectId); // 这将输出一个有效的 ObjectId 对象
  3. 确保传入的字符串是有效的 ObjectId 字符串。它应该是一个24个字符长的字符串,包含 12 字节的数据(通常是16进制表示的)。

如果您传入的字符串不是有效的 ObjectId,Mongoose 会抛出一个错误提示。在实际应用中,您可能需要对这种情况进行处理,例如:

javascript
const mongoose = require('mongoose'); const idString = 'invalid-object-id'; try { const objectId = mongoose.Types.ObjectId(idString); console.log(objectId); } catch (error) { console.error('Error converting string to ObjectId:', error.message); }

确保您捕获并妥善处理任何可能因无效的字符串输入而抛出的错误,以避免在您的应用程序中引入 bug。

2024年6月29日 12:07 回复

你可以这样做:

shell
var mongoose = require('mongoose'); var id = mongoose.Types.ObjectId('4edd40c86762e0fb12000003');
2024年6月29日 12:07 回复

你也可以用这个

shell
const { ObjectId } = require('mongodb'); const _id = ObjectId("4eb6e7e7e9b7f4194e000001");

这是最简单的方法

2024年6月29日 12:07 回复

你可以这样做:

shell
var mongoose = require('mongoose'); var _id = mongoose.mongo.BSONPure.ObjectID.fromHexString("4eb6e7e7e9b7f4194e000001");

编辑:新标准有 fromHexString 而不是 fromString

2024年6月29日 12:07 回复

从评论来看,您正在寻找:

shell
mongoose.mongo.BSONPure.ObjectID.isValid

或者

shell
mongoose.Types.ObjectId.isValid
2024年6月29日 12:07 回复

var mongoose = require('mongoose'); var _id = mongoose.mongo.ObjectId("4eb6e7e7e9b7f4194e000001");

2024年6月29日 12:07 回复

你的答案