Bookshelf.js设置属性不在数据库中

我有一个Bookshelf.js模型。 我希望能够设置和获取该数据库中不存在的模型的属性。

例如让我说我有一个模型,看起来像这样:

var Domain = bookshelf.Model.extend({ tableName: 'domains', initialize: function() { this.on('creating', this.setDomainName); }, setDomainName: function() { this.set('name', getDomainFromUrl(this.url)); } }); 

使用如下所示的架构:

 knex.schema.createTable('domains', function (table) { table.increments().index(); table.text('name').index(); table.timestamps(); }); 

我希望能够保存一个叫做url的属性,然后在保存之前parsing这个url到一个域中。

当我尝试这样的事情:

 new Domain({url: 'http://someurl.com/foo/bar'}).save() 

我收到错误消息:

 "column \"url\" of relation \"domains\" does not exist" 

我看了看。 我无法find任何方式将非持久属性添加到bookhelf.js模型。 我也找不到有关将自定义getter和setter方法添加到bookhelf.js模型的任何信息。

任何帮助或见解,表示赞赏!

在我的手机上,原谅这个简短的回复,但是你想要的就是所谓的“虚拟”或者“合成”字段。

https://github.com/tgriesser/bookshelf/wiki/Plugin:-Virtuals

每个数据库映射器都有它们,但是当你不知道它们被称为什么的时候,谷歌解决scheme是很困难的。