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

7

我有一个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的属性,然后在保存之前解析该url并提取其域名。

我尝试了以下代码:

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

我收到了如下错误信息:
"column \"url\" of relation \"domains\" does not exist"

我已经搜索了很久,但无法找到在bookshelf.js模型中添加非持久属性的方法。我也没有找到有关在bookshelf.js模型中添加自定义getter和setter方法的任何信息。
欢迎任何帮助或见解!
1个回答

8

1
哇,谢谢!这正是我需要的。你说得对,如果不知道它们叫什么,我可能永远都找不到它们。 - nmajor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接