我在我的 Nodejs 应用程序中使用猫鼬模型
在下面的代码片段中
userID = req.user.id
const uid = new mongoose.Types.ObjectId(userId)
if(course.StudentsEnrolled.includes(uid)){
// business logic
}
这里的 userId 将是字符串的形式 但我在“ObjectId”中看到一条虚线:
'mongoose.Types.ObjectId' 的签名 '(inputId: number): ObjectId' 已弃用。ts(6387) bson.d.ts(1030, 8):该声明在此处被标记为已弃用。
我想知道为什么会发生这种情况,因为我在网上没有找到任何解决方案
您看到的警告是因为
mongoose.Types.ObjectId
需要 string
输入,但 req.user.id
可能是 number
。要修复它,请在传递之前将 req.user.id
转换为 string
:
const userId = req.user.id.toString();
const uid = new mongoose.Types.ObjectId(userId);
这符合 Mongoose 的期望并解决了警告。