我试图使用include方法检查数组中现有的MongoDB Id,但它始终返回false。
是include方法中的某种错误,还是我做错了下面的代码?
let user = req.user._id;
let keyword= req.query.q;
let userSearchHistory = await UserSearchHistory.findOne({searchKeywords: keyword}).exec();
if (!userSearchHistory.users.includes(user))
{
}
我的数据库中的用户是一个ObjectId指向用户集合的数组
我也尝试过转换用户对象
let user= mongoose.Types.ObjectId(req.user._id);
但是结果还是一样。
将ObjectIds转换为String可以为我工作,但是随后我必须删除模型中的引用,正确的处理方式是什么?
最佳答案
这可能是由于userSearchHistory.users返回一个objectIds数组而发生的。
您可以尝试将userSearchHistory.users.includes(user)
替换为userSearchHistory.users.map(user=>user.toString()).includes(user)
。
这样,您将能够在应用“包含”功能之前将objectIds的数组转换为字符串的数组。
编辑:您是否尝试过使用req.user._id.trim()修剪'req.user._id'中的空格,然后将其强制转换为objectId?