Javascript 通过REST端点使用JSON对象更新Mongoose模式
我有一个与JSON对象(用户)一起提交的REST端点,我只是将相应的mongo记录设置为该JSON对象。这样就省去了更新服务方法和端点中的模式更改的麻烦,只剩下Mongoose模型需要更新 如果有的话,还有什么更安全的方法 示例用户JSONJavascript 通过REST端点使用JSON对象更新Mongoose模式,javascript,angularjs,node.js,mongodb,rest,Javascript,Angularjs,Node.js,Mongodb,Rest,我有一个与JSON对象(用户)一起提交的REST端点,我只是将相应的mongo记录设置为该JSON对象。这样就省去了更新服务方法和端点中的模式更改的麻烦,只剩下Mongoose模型需要更新 如果有的话,还有什么更安全的方法 示例用户JSON { 'fname': 'Bill', 'lname': 'Williams', 'email': 'bill@billwilliams.com', 'settings': { 'strokeColor': '#FF0000' }
{
'fname': 'Bill',
'lname': 'Williams',
'email': 'bill@billwilliams.com',
'settings': {
'strokeColor': '#FF0000'
}
}
来自我的角度服务
Update: function(my_user) {
return $http.put('http://api.domain.com/v1/api/users/' + _user.id, {
user: my_user,
token: window.localStorage['token']
});
}
api.route('/users/:user_id')
.put(function(req, res) {
User.findById(req.params.user_id, function(err, user) {
userData = req.body.user;
if (user) {
//-- This is potential trouble area?
User.update({'_id': user._id}, {$set: userData});
user.save(function(err) {
res.json({
success: true,
message: 'User updated'
});
}); //-- end findById()
}); //-- end /users/:user_id put() route
节点中的我的REST端点
Update: function(my_user) {
return $http.put('http://api.domain.com/v1/api/users/' + _user.id, {
user: my_user,
token: window.localStorage['token']
});
}
api.route('/users/:user_id')
.put(function(req, res) {
User.findById(req.params.user_id, function(err, user) {
userData = req.body.user;
if (user) {
//-- This is potential trouble area?
User.update({'_id': user._id}, {$set: userData});
user.save(function(err) {
res.json({
success: true,
message: 'User updated'
});
}); //-- end findById()
}); //-- end /users/:user_id put() route
看一看
它基本上是这样工作的:
令牌可能会在一段时间后过期(当用户需要先注册时很有用),这会增加额外的安全性。我目前正在使用JWT,我更担心的是一个人是否会通过身份验证并以某种方式操纵自己的JSON并发布。好吧,我很好奇其他人会如何回答这个问题。顺便问一下:为什么要更新和保存用户。两者中的一个就足够了。您应该明确地验证该对象,以确保它只有特定用户可以更新/添加的密钥,并且允许该用户更新该特定用户记录。