我正在尝试使用控制器根据用户修改页面。
我正在使用它:
$http.get('/someUrl').then(function(response){
$scope.firstname = response.data;
});
我要做的是,从我的数据库中获取每个字段并相应地使用它们。
如果这是我的架构,我已经有一个人存储在数据库中:
var personSchema = new mongoose.Schema({
firstname: {type: String, required: true, },
lastname: {type: String, required: true}
});
var person = mongoose.model('People', personSchema);
module.exports = person;
我将在'/ someUrl'中使用哪个网址来获取当前登录的人的名字?
另外,我是否缺少执行此操作所需的任何功能?
修改 我的路线
router.post("/update-profile", function(req, res) {
if (!req.session.user) {
return res.status(401).send();
}
var firstname = req.body.firstname;
var lastname = req.body.lastname;
var newProfile = new UserProfile();
newProfile.firstname = firstname;
newProfile.lastname = lastname;
console.log(newProfile);
newProfile.save(function(err, savedProfile) {
if (err) {
console.log(err);
return res.status(500).send();
} else {
res.render("profile");
return res.status(200).send();
}
});
});
答案 0 :(得分:0)
从网址获取人物对象。
$http.get('/user?id=5').then(function(response){
$scope.user = response.data;
});
其中id是用户ID。
然后在您的HTML中,您可以使用{{user.firstName}}
。
您还可以在加载时将req.user
传递到页面,这样您就不需要再进行另一次访问。
res.render('page',{user:req.user});
然后(在ejs中)
$scope.user = <%=user%>;
答案 1 :(得分:0)
我的感觉是,您应该有一个终结点/api/users/:id
,它应该期望_id
作为请求参数。
所以你的获取请求就像:
$http.get('/someUrl/' + current_logged_in_user_id).then(function(response){
$scope.firstname = response.data;
});
您的后端代码将类似于:
app.get('/someUrl/:id', function(req, res){
User.findById(req.params.id, function (err, user) {
if(user) res.json(user.firstName);
});
});
现在根据您提供的信息,我能告诉您最好的信息。您可以使用DaftMonk's Angular Fullstack Generator。它为您创建整个身份验证Boilerplate。它会根据session_id
自动获取用户详细信息,并将user
添加到req.user
。因此,在请求处理程序中,您可以使用req.user