MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

renvoie l'erreur de résolution dans la fonction de nœud

Parce que vous ne transmettez pas correctement l'utilisateur récupéré au query.exec .

Vous devez faire :

var Users  = require('../models/users-model.js');

function usernametoid(id) {
    return new Promise( function (resolve, reject) {
        Users.findOne({ username : id }).then( function(user){
          //If you use lodash you can do _.isNull(user)
          if(user == null){
            return reject({error : 'User not found'});
          }

          user.exec(function(userdata, error) {
              if(userdata){
                return resolve(userdata);
              } 
              if(error){
                 return reject({error : 'Error while executing query'});
              }
           });
        });
    });
}

Je ne comprends pas vraiment pourquoi vous importez Users Model comme ça. Je ne pense pas que Node pourra le récupérer comme ça.

Et, vous devriez avoir besoin de mongoose dans votre server.js

Pour attraper le rejet, vous avez besoin du code suivant :

UserFactory.userNameToId(id).then( function(response){
  if(response.error){
    console.log('error '+response.error);
  }
  if(response){
    console.log('Got response '+response);
  }
});