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是很困难的。