2016-08-18 3 views
1

Работы с этим примером (https://stormpath.com/blog/build-nodejs-express-stormpath-app)stormpath, экспресс - проверить, если пользователь существует в маршруте

Я добавил маршрут и вид для отображения некоторых из всех пользователей учетной записи профиля.

username: jsmith

http://localhost:3000/-jsmith (note the -) 

, который работает отлично. - даже если пользователь не вошел в систему

Если пользователь не существует, приложение просто виснет и ничего не возвращается.

/-jsmithxxx 

Q:

Как проверить, если пользователь существует, и вернуться, чтобы посмотреть, "Пользователь не найден"?

Спасибо, Роб

app.get('/-:id', function (req, res, next) { 
    console.log('the response will be sent by the next function ...'); 
    var id = req.params.id; 
    console.log(id); 
    next(); 
}, 
function (req, res) { 
    var id = req.params.id; 
req.app.get('stormpathApplication').getAccounts({ username: id }, (err, accounts) => { 
    if (err) throw err; 
    accounts.each((account, cb) => { 
    console.log('Found matching account:', account); 
    cb(); 
    console.log('username:' + account.username) 
    res.render('user', { 
    email: account.email, 
    surname: account.surname, 
    account:account // this passes object, which can be used in view, no need to define email:account.email in server.js 

    }); 
}); 
}); 
} 
); 

ответ

0

Похоже, это то, что вы хотите:

app.get('/-:id', function(req, res, next) { 
    var id = req.params.id; 
    var spApp = req.app.get('stormpathApplication'); 
    var acc; 

    spApp.getAccounts({ username: id }, function(err, accounts) { 
    if (err) { 
     return res.send('An error occured. Please try again.'); 
    } 

    accounts.each(function(account, cb) { 
     acc = account; 
     cb(); 
    }, function() { 
     if (!acc) { 
     return res.send('User not found.'); 
     } 

     return res.render('user', { 
     email: account.email, 
     surname: account.surname, 
     account:account 
     }); 
    }); 
    }); 
});