在 es6 中编写书架模型

Posted

技术标签:

【中文标题】在 es6 中编写书架模型【英文标题】:Writing bookshelf models in es6 【发布时间】:2015-12-29 05:44:15 【问题描述】:

有没有办法使用 es6 类编写书架模型?可以看到书架源码本身是用es6写的。但是我遇到的所有例子和源码都是用 es5 写的。我看到一个详细的github issue 说明这是可能的,但它主要讨论了关于在类中编写模型的一些错误。如何编写和使用带有 es6 类的书架模型?

【问题讨论】:

虽然这个问题还有待回答,但我发现并一直专门使用objection.js,它也是基于knex。 【参考方案1】:

是的,你可以!

// database.js
import config from '../../knexfile';
import knex from 'knex';
import bookshelf from 'bookshelf';

const Bookshelf = bookshelf(knex(config[process.env.NODE_ENV || 'development']));

Bookshelf.plugin('registry'); // Resolve circular dependencies with relations
Bookshelf.plugin('visibility');

export default Bookshelf;


// Administers.js
import Bookshelf from '../database'
import  createValidatorPromise as createValidator, required, email as isEmail  from '../../utils/validation';
import  User, Organization  from '../';
import  BasicAdministersView, DetailedAdministersView  from '../../views/index';

class Administers extends Bookshelf.Model 

  get tableName()  return 'administers'; 

  get hasTimestamps()  return true; 

  view(name)
    return new (
      basic: BasicAdministersView,
      detailed: DetailedAdministersView
    [name])(this);
  

  user() 
    console.log(User);
    return this.belongsTo('User', 'user_id');
  

  organization() 
    return this.belongsTo('Organization', 'organization_id');
  


export default Bookshelf.model('Administers', Administers);

【讨论】:

以上是关于在 es6 中编写书架模型的主要内容,如果未能解决你的问题,请参考以下文章

全栈项目|小书架|服务器开发-Koa2中间件机制洋葱模型了解一下

分发用 ES6 编写的 ReactJS 组件并在 ES5 源代码中使用它们

Android中的书架

是否可以使用 ES6 模块编写 JS 库,但仍然可以在 NodeJS 后端使用它?

NPM:在node_modules目录中编辑es6编写的插件而不进行转换

如何编写扩展功能组件的 ES6 类 React 组件?