Mongoose 4.11.9中ObjectId创建报错的解决方法咨询
解决Mongoose中创建ObjectId的警告问题
嘿,我之前也碰到过这个警告,别担心,这只是Mongoose在提醒你用更规范的方式创建ObjectId而已,修复起来很简单!
先给你理清楚原因:在Mongoose 4.x版本里,Schema.ObjectId其实是Types.ObjectId的旧别名,官方已经明确不推荐使用这个别名了,所以每次你用它创建新的ObjectId实例时,服务器日志就会弹出这个提示。虽然当前功能还能正常运行,但跟着官方推荐的方式来,能避免后续版本可能出现的兼容性问题。
解决步骤如下:
- 找到你代码中所有创建新ObjectId实例的地方,比如类似这样的代码:
const mongoose = require('mongoose'); const myNewId = new mongoose.Schema.ObjectId(); - 把它替换成官方推荐的写法:
const mongoose = require('mongoose'); const myNewId = new mongoose.Types.ObjectId();
这里要注意区分两种不同的使用场景:
- 如果是在Schema定义中指定字段类型,你应该用
mongoose.Schema.Types.ObjectId,比如:
这种写法是完全合规的,不会触发警告——警告只针对创建新ObjectId实例时误用const userSchema = new mongoose.Schema({ postId: mongoose.Schema.Types.ObjectId });Schema.ObjectId的情况。
替换完所有对应的代码后,重启你的Node.js应用,那个烦人的警告就会消失啦!
内容的提问来源于stack exchange,提问作者mhendek
相关产品推荐
相关产品推荐

