首页 文章

StrongLoop:更新currentUser而不输入密码?

提问于
浏览
1

Setting

  • Strongloop / loopback:^ 2.10.2

  • AngularJS 1.3

Problem

在配置文件页面上,用户模型会更新,但不应传输密码(无论如何它都是经过哈希处理并且不可用) .

Approach

所以我尝试了以下内容 .

user.$save().then(cb);

user-object是$ ressouce,它确实向服务器创建 PUT /users/?id=1 请求,但strongloop尝试INSERT实体而不是更新,并弹出错误:

"message":"ER_NO_DEFAULT_FOR_FIELD: Field 'password' doesn't have a default value"

Question

如何告诉strongloop在PUT中进行更新而不是插入?

谢谢!

3 回答

  • 0

    提供了一种解决方法here .

    因此,在您的代码中,通过以下内容替换对 user.$save 的调用

    userData = {'someCustomUserProperty':'someValue'};
    User.prototype$updateAttributes({ id: user.id }, userData);
    
  • 0

    找到了一个非常糟糕的解决方案,只应该使用,直到真正的修复程序投入 生产环境 . 这是错误的配置和重复的代码,但至少它的工作原理 .

    var urlBase = "/api";
    var UserUpdate = $resource(
        urlBase + '/users/:id',{id:'@id'},
        {"upsert": { url: urlBase + "/users/:id", method: "PUT"}}
     );
     UserUpdate.upsert({id: user.id}, user, cb, cb);
    
  • 0

    下面的代码对我有用,希望它会有所帮助 .

    var params = {
                    access_token: LoopBackAuth.currentUserToken,
                    id:LoopBackAuth.currentUserId
                };
                var promise = User.prototype$updateAttributes(
                    params,
                    user,
                    angular.noop,
                    angular.noop
                ).$promise;
    
                promise.then(ok,fail);
    

相关问题