设置:
问题:
在配置文件页面上,用户模型会更新,但不应传输密码(无论如何都要进行散列并且不可用)。
方法:
所以我尝试了以下内容。
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"
问题:
如何告诉strongloop在PUT中进行更新而不是插入?
谢谢!
答案 0 :(得分: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);
答案 1 :(得分: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);
答案 2 :(得分:0)
提供了一种解决方法here。
因此,在您的代码中,请使用以下
替换对user.$save
的调用
userData = {'someCustomUserProperty':'someValue'};
User.prototype$updateAttributes({ id: user.id }, userData);