【问题标题】:sails/waterline remove key帆/水线移除钥匙
【发布时间】:2016-02-12 16:11:40
【问题描述】:

我可能只是在这里有点大脑冻结,但我被困在一个愚蠢的问题上。我有一个 angular/sails 应用程序,它允许用户填写表格,并在途中保存他们的进度,以便他们以后可以回来。

初始模型通过创建 (POST) 以通常的方式创建,然后通过更新 (PUT) 进行更改。问题是,当我删除一个键并保存时(即用户清除输入字段,导致 Angular 实际上从对象中删除键),它实际上并没有删除该键,因为更新的性质(尤其是在Sails) 是它只影响您在有效载荷中拥有的密钥,而让其他密钥保持原样。

让我尝试进一步解释......

已创建记录....

{
    first : "Dan",
    last : "Knight"
    age : 40
}

更新有效负载 (PUT)....

{
   first : "Danny"
   // 'last' field not present as was cleared in form
   age : 40 
}

结果....

{
    first : "Danny",
    last : "Knight"
    age : 40
}

想要的结果....

{
    first : "Danny",
    age : 40
}

我意识到我可能应该设置为 null 而不是删除该字段,但我能做到这一点的唯一方法是为每个表单字段设置一个 $watch,如果我检测到“”(空字符串),我真的不想设置几十个观察者,看起来很乱。

有什么想法吗?

【问题讨论】:

    标签: sails.js waterline


    【解决方案1】:

    您可以在您的风帆模型/控制器中使用lodash.defaults 以确保缺少的字段具有所需的默认值

    var defaults = {
      first: null,
      last: null,
      age: null
    };
    
    _.defaults(resBody, defaults);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多