【问题标题】:Cannot convert string to ObjectId in NodeJS无法在 NodeJS 中将字符串转换为 ObjectId
【发布时间】: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 的转换

标签: node.js mongodb


【解决方案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');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-26
        • 2011-12-11
        • 2018-11-09
        • 2017-03-11
        • 1970-01-01
        • 2014-12-08
        • 1970-01-01
        • 2016-09-25
        相关资源
        最近更新 更多