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

StrongLoop: Update currentUser without putting the password?

设置:

问题:

在个人资料页面上,用户模型得到更新,但不应传输密码(无论如何它是散列的并且不可用。)。

方法:

所以我尝试了以下方法。

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

用户对象是一个 $ressouce,它确实向服务器创建了一个 PUT /users/?id=1 请求,但是 strongloop 尝试插入实体而不是更新,弹出错误:

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

问题:

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

谢谢!

找到一个非常糟糕的解决方案,应该只使用它,直到真正的修复投入生产。这是错误的配置和重复的代码,但至少它有效。

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);

下面的代码对我有用,希望对你有帮助。

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);

提供了解决方法 here

因此,在您的代码中,将对 user.$save 的调用替换为以下

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