Javascript包含方法不适用于MongoDB ID

时间:2017-11-20 10:56:30

标签: javascript node.js mongodb

我试图使用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为我工作,但是我必须删除模型中的引用,处理这个问题的正确方法是什么?

1 个答案:

答案 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?