2
votes

mongoose find () renvoie les propriétés du modèle

J'essaie de trouver un utilisateur existant utilisant mangouste Ma requête est

[ model {
        '$__':
         InternalCache {
           strictMode: true,
           selected: [Object],
           shardval: undefined,
           saveError: undefined,
           validationError: undefined,
           adhocPaths: undefined,
           removing: undefined,
           inserting: undefined,
           saving: undefined,
           version: undefined,
           getters: {},
           _id: 5c98e64f2106e94022532c9f,
           populate: undefined,
           populated: undefined,
           wasPopulated: false,
           scope: undefined,
           activePaths: [StateMachine],
           pathsToScopes: {},
           session: null,
           ownerDocument: undefined,
           fullPath: undefined,
           emitter: [EventEmitter],
           '$options': [Object] },
        isNew: false,
        errors: undefined,
        _doc:
         { isActive: true,
           _id: 5c98e64f2106e94022532c9f,
           userName: 'buyer@mysite.com',
           password:
            '$2a$05$vpowA76cB3T/4eHGbQPqd.F/iIebX7SXKPZA2k1wcmlSIDks0q852',
           userCategory: 'buyer',
           createdDate: 2019-03-20T14:31:43.250Z,
           updatedDate: 2019-03-20T14:31:43.250Z,
           __v: 0 },
        '$init': true } ]

Si l'utilisateur existe, cela signifie qu'il renvoie le tableau suivant.

UserAccount.find(variables, function (error, success) {
            if (error) {
                response.send({status: false});
            } else {
                console.log(success);
            }
        }); 

Je ne sais pas ce qui cause ce problème? Jusqu'à hier, il ne renvoyait que les données utilisateur, mais cela m'est si étrange. Comment résoudre ce problème? Quelqu'un peut-il m'aider à résoudre ce problème s'il vous plaît? Merci.


0 commentaires

3 Réponses :


0
votes

Les propriétés supplémentaires que vous obteniez à l'origine sont dues au fait que les résultats sont une collection d'instances de modèle qui viennent avec des propriétés et des méthodes supplémentaires qui ne sont pas disponibles sur les objets normaux. vous pouvez passer {lean: true} comme option pour obtenir un objet simple sans toutes ces propriétés et méthodes supplémentaires.

UserAccount.find(variables, {lean: true}, function (error, success) {
            if (error) {
                response.send({status: false});
            } else {
                console.log(success);
            }
        }); 


1 commentaires

J'ai essayé cela aussi en me référant à stackoverflow.com/questions/28442920/... mais cela n'a pas fonctionné



3
votes

Je suis également confronté au même problème, le problème est que si vous utilisez la dernière version de mongo avec l'ancienne mangouste, cela peut être résolu en installant la nouvelle version de la mangouste et en exécutant le mongoose find (), cela résoudra votre problème.


1 commentaires

Oui, j'ai réinstallé mon système d'exploitation et tout complètement. La mise à jour de la mangouste a résolu mon problème.



0
votes

Vous vous débarrassez simplement de cela en utilisant lean () à la fin de la requête

const courses = await Course
    .find({ isPublished: true })
    .or([
        { price: { $gte: 15 } },
        { name: /.*by.*/i }
    ]).lean(); // use lean to remove unnecessary values from output 


0 commentaires