Sails.js 帆/水线移除键

Sails.js 帆/水线移除键,sails.js,waterline,Sails.js,Waterline,我可能只是脑子有点僵,但我被一个愚蠢的问题困住了。我有一个angular/sails应用程序,它允许用户填写表单,并在途中保存他们的进度,以便他们可以稍后再来 初始模型通常通过创建(POST)创建,然后再通过更新(PUT)进行更改。问题是,当我删除一个键并保存(即,用户清除输入字段,导致angular实际从对象中删除该键)时,它实际上并没有删除该键,因为更新的本质(尤其是在sails中)是它只影响有效负载中的键,而保留其他键 让我试着进一步解释 已创建记录 { first : "Dan"

我可能只是脑子有点僵,但我被一个愚蠢的问题困住了。我有一个angular/sails应用程序,它允许用户填写表单,并在途中保存他们的进度,以便他们可以稍后再来

初始模型通常通过创建(POST)创建,然后再通过更新(PUT)进行更改。问题是,当我删除一个键并保存(即,用户清除输入字段,导致angular实际从对象中删除该键)时,它实际上并没有删除该键,因为更新的本质(尤其是在sails中)是它只影响有效负载中的键,而保留其他键

让我试着进一步解释

已创建记录

{
    first : "Dan",
    last : "Knight"
    age : 40
}
更新有效负载(PUT)

结果

{
    first : "Danny",
    last : "Knight"
    age : 40
}
{
    first : "Danny",
    age : 40
}
期望的结果

{
    first : "Danny",
    last : "Knight"
    age : 40
}
{
    first : "Danny",
    age : 40
}
我意识到我应该设置为null而不是删除字段,但我唯一能做的就是为每个表单字段设置一个$watch,如果我检测到“”(空字符串),我就设置为null,我真的不想设置几十个看起来很混乱的观察者

有什么想法吗?

您可以在sails模型/控制器中使用,以确保缺少的字段具有所需的默认值

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

_.defaults(resBody, defaults);
您可以在sails模型/控制器中使用,以确保缺少的字段具有所需的默认值

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

_.defaults(resBody, defaults);