2016-11-04 10 views
0

Я использую NodeJS для создания службы REST API. Мне не нужно отображать любые веб-страницы или файлы ejs.Render JSON как ответ в NodeJS

С учетом этого мне нужно знать, есть ли аркитектура для сохранения шаблонов JSON, таких как папка «views» для хранения шаблонов .ejs, чтобы использовать их в качестве ответа, скажем, профиля.

Кроме того, я работал с паспортным модулем для аутентификации пользователей, и я не могу передать мгновенное сообщение в ответ JSON, до сих пор это, как это выглядит:

passport.use('local.signup', new LocalStrategy({ 
    usernameFiled : 'email', 
    passwordField : 'password', 
    passReqToCallback : true 
}, function(req, res, password, done){ 
    User.findOne({'email' : email}, function(err, user){ 
     if (err) 
      return done(err); 
     if (user) 
      return done(null, false, {message : 'Email already in use'}); 
     var newUser = new User(); 
     newUser.email = email; 
     newUser.password = newUser.encryptPassword(password); 
     newUser.save(function(err, result){ 
      if (err) 
       return done(err); 
      return done(null, newUser); 
     }); 
    }); 

})) ; 

И это моя маршрутизация:

app.post('/signup', passport.authenticate('local.signup', { 
    successRedirect : '/me', 
    failureRedirect : '/loginerr', 
    failerFlash : true 
})); 

/*===== SECURE ==== */ 

app.get('/me', function(req, res, next){ 
    res.end('Welcome user'); 
}); 

/* ========== Errors ====================== */ 

app.get('/loginerr', function(req, res, next){ 
    var message = req.flash('error'); 
    res.setHeader('Content-Type', 'application/json'); 
    res.json({'error' : 'email already taken'}); //Here i should use the flash message instead. 
}); 

Как вы можете видеть, если есть ошибка, когда пользователь подписывает вверх, он перенаправляется к/loginerr получить, вместо того, что я хочу, чтобы ответить с шаблоном в формате JSON, чтобы ответить на сообщение флэш ,

Как я могу это сделать?

ответ

1

Может быть, вы можете использовать нужно JSON.stringify()

, например

app.get('/loginerr', function(req, res, next){ 
    res.setHeader('Content-Type', 'application/json'); 
    res.end(`{error:${req.flash('error')}}`) 
}); 

Good Luck

 Смежные вопросы

  • Нет связанных вопросов^_^