我试图使用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为我工作,但是我必须删除模型中的引用,处理这个问题的正确方法是什么?
答案 0 :(得分:1)
这可能是因为userSearchHistory.users返回一个objectIds数组。
您可以尝试将userSearchHistory.users.includes(user)
替换为userSearchHistory.users.map(user=>user.toString()).includes(user)
。
通过这种方式,您可以在应用' includes'之前将objectIds数组转换为字符串数组。功能
编辑:您是否尝试修剪&re ;.user._id' req.user._id'使用req.user._id.trim()然后将其强制转换为objectId?