2017-11-20 2 views
0

配列の既存のMongoDB Idをチェックするためにincludesメソッドを使用しようとしましたが、常にfalseを返しています。Javascript includesメソッドがMongoDB IDで機能しない

それは方法を含むか、私は以下の何か間違ったことをやっていることは私のコードの私のデータベース内のユーザーが、ユーザーのコレクションに

を参照のうえのObjectIdを持つ配列である

let user = req.user._id; 
    let keyword= req.query.q; 
    let userSearchHistory = await UserSearchHistory.findOne({searchKeywords: keyword}).exec(); 

    if (!userSearchHistory.users.includes(user)) 
    { 

    } 

でのバグのいくつかの種類です私もユーザーオブジェクトを変換しようとしました

let user= mongoose.Types.ObjectId(req.user._id); 

しかし、それでも同じ結果です。 ObjectIdを文字列に変換しても問題はありませんが、モデルの参照を削除する必要があります。これを処理する適切な方法は何ですか?

答えて

0

これは、おそらくuserSearchHistory.usersがobjectIdsの配列を返すために起こります。 userSearchHistory.users.includes(user)userSearchHistory.users.map(user=>user.toString()).includes(user)に置き換えることができます。

このようにして、 'includes'関数を適用する前に、objectIdsの配列を文字列の配列に変換することができます。

編集:req.user._id.trim()を使用して 'req.user._id'のスペースをトリミングしてからobjectIdにキャストしてみましたか?

関連する問題