保存模型对象时如何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(),所有扩展它的模型都将以相同的方式运行

自鸣得意,但我遇到这个问题很多次,所以我创建了一个书架插件。不想每次都必须手动定义允许的属性。

https://www.npmjs.com/package/bookshelf-strip-save