无法在 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?
在 PHP 中将对象转换为 JSON 并将 JSON 转换为对象,(像 Gson for Java 之类的库)