【问题标题】:StrongLoop: Update currentUser without putting the password?StrongLoop:在不输入密码的情况下更新 currentUser?
【发布时间】:2015-03-10 21:57:08
【问题描述】:

设置

  • 强循环/环回:^2.10.2
  • AngularJS 1.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 中进行更新而不是插入?

谢谢!

【问题讨论】:

  • 顺便说一句。与“User.upsert(user, cb);”的行为相同
  • 这个问题也有github问题。令人难以置信的是,这个基本问题还没有解决。 -_- github.com/strongloop/loopback-sdk-angular/issues/125
  • 好吧,没那么难以置信,因为这不是环回的核心功能(虽然非常方便),很可能需要相当多的调试,而且时间是有限的资源:)跨度>

标签: angularjs put loopbackjs strongloop


【解决方案1】:

提供了解决方法here

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

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

【讨论】:

    【解决方案2】:

    找到了一个非常糟糕的解决方案,应该只在真正的解决方案投入生产之前使用。这是错误的配置和重复的代码,但至少它可以工作。

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

    【讨论】:

    • 你有没有费心看其他答案?
    • 当时没有其他答案 :) 但谢谢你的注意
    • 嗯,好的。对不起,如果我听起来很苛刻,不是那个意思。我刚刚转发了一位核心开发人员提供的修复程序,因此您应该考虑尝试一下。如果您认为问题已解决,请考虑选择任何已接受的答案来关闭问题。干杯
    【解决方案3】:

    以下代码对我有用,希望对您有所帮助。

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

    【讨论】:

      猜你喜欢
      • 2012-11-06
      • 2011-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 2022-07-28
      • 1970-01-01
      相关资源
      最近更新 更多