2016-04-15 2 views
0

Я следующий кодЭкспресс отправить информацию пользователя со страницей

var user = function(req,res,next) { 
db.findOne({ username: req.params.uid }, function (err, docs) { 
//error handaling 
if(err){console.log(err)} 
//check if user is real 
if(docs === null){ 
    res.end('404 user not found'); 
}else{ 
    //IMPORTANT PART res.sendFile(__dirname + '/frontend/user.html'); 
    } 
}); 

}

app.get('/user/:uid',user); 

Не беспокойтесь о материале базы данных.

Я хочу знать, как получить req.params.uid, отправленный на клиентскую сторону и как его получить.

Большое спасибо.

+0

Это зависит от того, что вы подразумеваете под «отправлением» на клиентскую сторону. Если вы просто хотите получить каждый запрос, вы можете отправить его в виде файла cookie. Проверьте их ['res.cookie'] (http://expressjs.com/en/api.html#res.cookie), чтобы отправить файл cookie и [' req.cookies'] (http://expressjs.com/ ru/api.html # req.cookies), чтобы получить его в будущих запросах. – hargasinski

+0

ваш вопрос немного расплывчатый, вы спрашиваете, как отправить req.params.uid клиенту? если это вопрос, 'req.params.uid' означает, что он уже был отправлен от клиента – Yerken

+0

, попробуйте этот' return response.render ('yourview', req.params.uid); ' – uzaif

ответ

0

Если пользователь правильно настроен каждый запрос будет иметь пользователя:

var user = function(req,res) { 
db.User.findOne({ _id: req.user._id }, function (err, docs) { 
//error handaling 
if(err){console.log(err)} 
//check if user is real 
if(docs === null){ 
    res.end('404 user not found'); 
}else{ 
    res.json(docs) 
    } 
}); 

и тогда ваша апи конечная точка является просто '/user/

В клиенте просто сделать GET запрос к этой конечной точке (возможно, с помощью AJAX), и ваш ответ будет любым пользователем, который делает этот запрос.

Примечание: Вам не нужно указывать next, если вы не определяете промежуточное ПО.

+0

И если это не так, тогда да , ваш вопрос слишком расплывчатый. Возможно, вы пытаетесь использовать серверный шаблонный движок, такой как Jade или EJS .. – fresh5447

+0

Спасибо, что помогли кучи именно то, что мне нужно –

+0

Не могли бы вы принять его в качестве ответа. Благодаря! – fresh5447

0

Это просто более полный ответ, основанный на моем комментарии.

Если вы хотите сохранить строку информации о пользователе с каждым сделанным ими запросом, то вы хотите использовать cookies.

Когда пользователь сначала делает запрос на страницу, вы должны установить cookie через res.cookie. Таким образом, в вашем коде, окончательное if заявление будет выглядеть примерно так:

if(docs === null) { 
    res.end('404 user not found'); 
} else { 
    res.cookie('uid', req.params.uid, { httpOnly: true }); 
    //IMPORTANT PART res.sendFile(__dirname + '/frontend/user.html'); 
} 

Затем, в следующем запросе, и фьючерсные запросы до истечения срока действия куки, вы можете получить доступ к нему с помощью:

req.cookies.uid 

Тем не менее, вам нужно cookie-parser промежуточного программного обеспечения где-то в вашем приложении заранее:

var cookieParser = require('cookie-parser'); 
app.use(cookieParser()); 

Если вам необходимо получить доступ к значению uid на стороне клиента, вы можете либо использовать шаблон, либо установить значение httpOnly на false при настройке с помощью res.cookie. Затем вы можете получить доступ к cookie, используя document.cookies.

Отъезд this W3Schools page для доступа к куки-файлам на клиентском столе.