stormpath, express — проверить, существует ли пользователь на маршруте

Работа с этим примером (https://stormpath.com/blog/build-nodejs-express-stormpath-app)

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

username: jsmith

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

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

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

/-jsmithxxx

Вопрос:

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

Спасибо, Роб

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

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

person Rob McCormack    schedule 18.08.2016    source источник


Ответы (1)


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

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
      });
    });
  });
});
person rdegges    schedule 19.08.2016