首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bookshelf.js集合属性不在数据库中

Bookshelf.js集合属性不在数据库中
EN

Stack Overflow用户
提问于 2015-04-03 03:21:37
回答 1查看 2.3K关注 0票数 7

我有一个Bookshelf.js模型。我希望能够为这个模型设置和获取数据库中不持久的属性。

例如,假设我有一个模型如下所示:

代码语言:javascript
复制
var Domain = bookshelf.Model.extend({
      tableName: 'domains',
      initialize: function() {
        this.on('creating', this.setDomainName);
      },
      setDomainName: function() {
        this.set('name', getDomainFromUrl(this.url));
      }
    });

使用如下所示的架构:

代码语言:javascript
复制
knex.schema.createTable('domains', function (table) {
    table.increments().index();
    table.text('name').index();
    table.timestamps();
  });

我希望能够保存一个名为url的属性,然后在它保存之前将url解析为域。

当我尝试这样的东西时:

代码语言:javascript
复制
new Domain({url: 'http://someurl.com/foo/bar'}).save()

我得到了错误消息:

代码语言:javascript
复制
"column \"url\" of relation \"domains\" does not exist"

我看过又看过。我无法找到向bookshelf.js模型添加非持久性属性的任何方法。我也找不到在bookshelf.js模型中添加自定义getter和setter方法的任何内容。

任何帮助或洞察力都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-03 20:40:18

在我的手机上,请原谅我的简短回复,但是你想要的是“虚拟”或“复合”字段。

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

每个数据库映射器都有它们,但是当您不知道它们的名称时,谷歌解决方案是可以理解的。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29425746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档