通过REST端点用JSON对象更新Mongoose架构

Updating Mongoose schema with JSON object via REST endpoint

本文关键字:更新 Mongoose 架构 对象 JSON REST 端点 通过      更新时间:2023-09-26

我有一个REST端点,它与JSON对象(User)一起提交,我只是将相应的mongo记录设置为该JSON对象。这为我省去了更新服务方法和端点中的模式更改的麻烦,只需要更新Mongoose模型。

如果有的话,还有什么更安全的方法呢?

示例用户JSON

{
  'fname': 'Bill',
  'lname': 'Williams',
  'email': 'bill@billwilliams.com',
  'settings': {
    'strokeColor': '#FF0000'
  }
}

从我的Angular服务

Update: function(my_user) {
  return $http.put('http://api.domain.com/v1/api/users/' + _user.id, {
    user: my_user,
    token: window.localStorage['token']
  });
}

Node中的我的REST端点

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

看看Jsonwebtoken。

它基本上是这样工作的:

  1. 创建一个REST端点,让用户获取具有有效载荷(例如id)
  2. 使用Jsonwebtoken中间件保护api的相关部分(如果使用express作为Web服务器)
  3. 用户将令牌添加到每个请求标头(通过使用$httpInterceptor)
  4. 在请求到达API之前,在服务器端检查令牌

代币可能在一定时间后过期(当用户需要首先注册时很有用),这增加了额外的安全性。