猫鼬中如果没有“new”,则无法调用类构造函数ObjectId

问题描述 投票:0回答:4

当我通过 API 请求从前端向后端发送数据时,出现此错误:

猫鼬中如果没有“new”,则无法调用类构造函数ObjectId,

我尝试转换为字符串和整数,但没有成功......

node.js mongoose objectid
4个回答
7
投票

我也是nodejs新手,我正在尝试发布一些问题,甚至是我找不到的答案。

这里的问题不是来自前端和后端,而是来自猫鼬模式

当我们将数据转换为objectId时,我们只需要声明new

.

解决方案:new mongoose.Types.ObjectId(Id)

如果您觉得有帮助,请喜欢答案,以便其他人快速到达。


4
投票
Object id = "649beed348b20e1b8e7bca95";

您可以这样传递:

new ObjectId(id);

2
投票

只需在 objectId() 函数前面添加 new 关键字即可。例如:

const documentToFind = { _id: new ObjectId("649beed348b20e1b8e7bca95") };

nodejs 的驱动程序连接中 objectId 函数的使用有所不同,您需要将其用作构造函数。参考:https://mongodb.github.io/node-mongodb-native/5.6/classes/BSON.ObjectId.html

如果是直接使用MongoDB中的函数进行查询,可以使用

ObjectId(“649beed348b20e1b8e7bca95”)

参考:https://www.mongodb.com/docs/v6.3/reference/method/ObjectId/#examples


0
投票

如果您在 Mongoose 版本 8 或更高版本中遇到问题,请确保使用“new”关键字实例化 Product 模型的新实例:

const product = Product({
_id: mongoose.Types.ObjectId(),
name: req.body.name,
price:req.body.price

});

替换为

const product = new Product({
    _id: new mongoose.Types.ObjectId(),
    name: req.body.name,
    price:req.body.price
  });

在第 1 行和第 2 行添加“new”关键字。 有帮助的话就点个赞吧。 :)

© www.soinside.com 2019 - 2024. All rights reserved.