我有一个博客模型:
let blogSchema = new mongoose.Schema({
author: { type: mongoose.Schema.Types.ObjectId, ref: "User" },
title: { type: String, required: true, unique: true },
description: { type: String, required: true, unique: true },
content: { type: String, required: true, unique: true },
likes: [{ type: mongoose.Schema.Types.ObjectId, ref: "User" }],
views: { type: Number, default: 0, required: true },
tags: [],
currentState: { type: String, enum: ['draft', 'published'], required: true, default: 'draft' }}, { timestamps: true });
和一个我认为没有必要展示的用户模型。
当我尝试查询作者与当前用户所遵循的用户ID列表相匹配的博客时:let blogs = await Blog.find({ author: { $in: blogIds } })
它给我错误:转换错误:将值“{ '$in':”强制转换为ObjectId失败[新对象ID(“6359 f421 fd 4678 e2 eba 3ffee”)] }”(对象类型)位于模型“博客”的路径“作者”处
我如何获得博客?我试过使用$or操作符,但我必须循环,它无论如何都不工作。$in
中的数组值被正确找到,如错误中所示,但它没有正确转换。
blogids数组是[ new ObjectId(“6359 f421 fd 4678 e2 eba 3ffee”)]。它是动态的,是用户遵循的用户ID数组(哎呀,名称不清楚)
1条答案
按热度按时间jtoj6r0c1#
我想您的blogIds数组可能有问题。请尝试使用mongoose.Types.ObjectId转换其中的所有值。
然后更新查找查询。