帆/水线移除键

时间:2016-02-12 16:11:40

标签: sails.js waterline

我可能只是在这里有一点大脑冻结,但我仍然坚持一个愚蠢的问题。我有一个角度/风帆应用程序,允许用户填写表格,并保存他们的进度,以便他们可以在以后回来。

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

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

创建记录....

{
    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,如果我检测到#34则设置为null ;" (空字符串),我真的不想设置几十个看起来很乱的观察者。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

var defaults = {
  first: null,
  last: null,
  age: null
};

_.defaults(resBody, defaults);