保存模型对象时如何剥离/忽略未使用的属性?

时间:2016-06-14 18:46:15

标签: bookshelf.js knex.js

我将角度模型对象发送到书架进行保存,但它可能带有数据库中没有的无关属性。当我保存时,书架会尝试保存所有属性并说它找不到这些额外的属性。

处理此问题的推荐方法是什么?我确信我可以设置一组列入白名单的属性,并手动剥离对象,但还有另一种方法吗? IE,是否有内置的方法来忽略未使用的属性?或者有没有办法查询数据库以获取列数组,然后使用它来剥离我的对象?

2 个答案:

答案 0 :(得分:2)

除了Ghost团队允许的属性数组之外,您还可以使用parse()

Mode = bookshelf.Model.extend({
  permittedAttributes: [ 'field1', 'field2', 'field3' ],

  parse: function (attrs) {
    return _.pick(attrs, this.permittedAttributes)
  }
})

如果在基础模型中定义parse(),则扩展它的所有模型的行为方式都相同

答案 1 :(得分:0)

在这里吹响我自己的号角,但是我遇到了很多问题,以至于我为书架创建了一个插件。不想每次都手动定义允许的属性。

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