无法在 NodeJS 中将字符串转换为 ObjectId

Posted

技术标签:

【中文标题】无法在 NodeJS 中将字符串转换为 ObjectId【英文标题】:Cannot convert string to ObjectId in NodeJS 【发布时间】:2020-05-28 13:58:09 【问题描述】:

我正在拔头发。

我尝试过使用猫鼬:

const ObjectId = require('mongoose').Types.ObjectId;

让 id = new ObjectId(peson["_id"]);

当我使用 console.log(id) 时,它只显示字符串值。 当我将 id 附加到我正在使用的另一个对象的数组中时,我 JSON.stringify() 整个 对象我只得到 '1djd892jowidj3wfejk93' 字符串值。

当我将我的 searchObject 传递给 Mongo 时,它不会返回结果。

我也尝试过为节点使用原生 MongoDB 驱动程序:

const ObjectId = require('mongodb');

让 id = Objectid("1djd892jowidj3wfejk93")

当登录到控制台并嵌入父搜索请求时,这也只返回一个字符串值。 JSON.stringify() 只显示字符串,查询返回空。

本机 NodeJs mongoDb 驱动程序

【问题讨论】:

如果您将字符串作为要搜索的值传递,它是否有效?我使用字符串查询,例如const devices = await Device.find( owner: req.user._id );。我认为 mongoDB 可以处理任何到 ObjectId 的转换 【参考方案1】:

尝试以下方法:

const ObjectID = require('mongodb');
const id = new ObjectID('5e059042b091f6000a4bf236');

【讨论】:

【参考方案2】:

如果你使用猫鼬,你不需要使用额外的依赖,

const mongoose = require('mongoose');

function convertToObjectID(id) 
    return mongoose.Types.ObjectId(id)

【讨论】:

【参考方案3】:

试试这个

var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId('1djd892jowidj3wfejk93');

【讨论】:

以上是关于无法在 NodeJS 中将字符串转换为 ObjectId的主要内容,如果未能解决你的问题,请参考以下文章

如何在nodejs mongodb本机驱动程序中将字符串转换为ObjectId?

如何在Nodejs中将json对象数组转换为String?

在 PHP 中将对象转换为 JSON 并将 JSON 转换为对象,(像 Gson for Java 之类的库)

在mysql Sequelize + Nodejs中将数组和对象转换为批量插入

在Nodejs中将base64 png转换为jpeg图像

无法在 postgresql 中将数字转换为字符串