StrongLoop:更新 currentUser 而不输入密码?
StrongLoop: Update currentUser without putting the password?
设置:
- Strongloop/环回:^2.10.2
- AngularJS1.3
问题:
在个人资料页面上,用户模型得到更新,但不应传输密码(无论如何它是散列的并且不可用。)。
方法:
所以我尝试了以下方法。
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);
设置:
- Strongloop/环回:^2.10.2
- AngularJS1.3
问题:
在个人资料页面上,用户模型得到更新,但不应传输密码(无论如何它是散列的并且不可用。)。
方法:
所以我尝试了以下方法。
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);