2017-11-20 2 views
0

Ich habe versucht, die Includes-Methode verwendet, um vorhandene MongoDB-ID in einem Array zu überprüfen, aber es gibt immer falsch zurück.Javascript enthält Methode funktioniert nicht mit MongoDB IDs

Ist es ein irgendeine Art von Fehlern in dem Verfahren beinhaltet oder mache ich etwas falsch unten ist mein Code

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

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

    } 

, wo Benutzer in meiner Datenbank ist ein Array mit ObjectId zu Benutzer Sammlung beziehen

Ich versuchte auch, Benutzerobjekt zu konvertieren

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

Aber immer noch das gleiche Ergebnis. Konvertieren ObjectIds in String für mich arbeiten, aber dann muss ich die Referenzen in meinem Modell entfernen, was ist der richtige Weg, damit umzugehen?

Antwort

0

Dies passiert wahrscheinlich, weil userSearchHistory.users ein Array von objectIds zurückgibt. Sie können versuchen, userSearchHistory.users.includes(user) durch userSearchHistory.users.map(user=>user.toString()).includes(user) zu ersetzen.

Auf diese Weise können Sie das Array von ObjectIds in ein Array von Strings konvertieren, bevor Sie die "includes" -Funktion anwenden.

Edit: Haben Sie versucht, Leerzeichen in 'req.user._id' mit req.user._id.trim() zu trimmen und dann auf objectId zu transformieren?

Verwandte Themen