sql >> Base de Datos >  >> NoSQL >> MongoDB

devolver el error de resolución en la función de nodo

Porque no está pasando correctamente el usuario obtenido a query.exec .

Tienes que hacer:

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'});
              }
           });
        });
    });
}

Realmente no entiendo por qué está importando Users Model como eso. No creo Node será capaz de buscarlo así.

Y, debe requerir mongoose en tu server.js

Para detectar el rechazo, necesita el siguiente código:

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