保存模型对象时如何strip/ignore未使用的属性?
How to strip/ignore unused attributes when saving a model object?
我正在将 angular 模型对象发送到书架进行保存,但它可能带有数据库中不存在的无关属性。当我保存时,书架会尝试保存所有属性并说找不到这些额外的属性。
推荐的处理方法是什么?我确定我可以设置一个白名单属性数组,然后手动剥离对象,但是还有另一种方法吗?
IE,有没有内置的方法来忽略未使用的属性?或者有没有办法查询数据库以获取列数组,然后使用它来剥离我的对象?
除了一系列允许的属性外,您还可以使用 parse()
,就像 Ghost 团队所做的那样。
Mode = bookshelf.Model.extend({
permittedAttributes: [ 'field1', 'field2', 'field3' ],
parse: function (attrs) {
return _.pick(attrs, this.permittedAttributes)
}
})
如果您在基础模型中定义 parse()
,所有扩展它的模型都将以相同的方式运行
自鸣得意,但我遇到这个问题很多次,所以我创建了一个书架插件。不想每次都必须手动定义允许的属性。
我正在将 angular 模型对象发送到书架进行保存,但它可能带有数据库中不存在的无关属性。当我保存时,书架会尝试保存所有属性并说找不到这些额外的属性。
推荐的处理方法是什么?我确定我可以设置一个白名单属性数组,然后手动剥离对象,但是还有另一种方法吗? IE,有没有内置的方法来忽略未使用的属性?或者有没有办法查询数据库以获取列数组,然后使用它来剥离我的对象?
除了一系列允许的属性外,您还可以使用 parse()
,就像 Ghost 团队所做的那样。
Mode = bookshelf.Model.extend({
permittedAttributes: [ 'field1', 'field2', 'field3' ],
parse: function (attrs) {
return _.pick(attrs, this.permittedAttributes)
}
})
如果您在基础模型中定义 parse()
,所有扩展它的模型都将以相同的方式运行
自鸣得意,但我遇到这个问题很多次,所以我创建了一个书架插件。不想每次都必须手动定义允许的属性。