目录

egg-toshihiko

Yet another ORM called Toshihiko plugin for egg.

NOTE: This plugin just for integrate Toshihiko into Egg.js, more documentation please visit http://github.com/XadillaX/Toshihiko.

NPM version Build Status Build status Test coverage David deps Known Vulnerabilities npm download

Installation

$ npm install --save egg-toshihiko
$ npm install --save mysql2

Usage & Configuration

config/config.default.js

exports.toshihiko = {
  database: '',
  host: 'localhost',
  port: 3306,
  username: 'root',
  password: '',

  connections: {
    default: {
      database: 'egg-toshihiko',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: '',
    },
    noBase: {
      database: 'mysql',
    },
  },
};

config/plugin.js

exports.toshihiko = {
  enable: true,
  package: 'egg-toshihiko'
};

Model Files

Please put models under app/model directory.

Model File Class Name
user.js app.model.User
person.js app.model.Person
user_group.js app.model.UserGroup

Defining a Model

When define a model, you should get a toshihiko connection first.

app.toshi or app.toshihiko equals to require('toshihiko').Toshihiko.

And an extra function app.toshi.get(CONN_NAME) returns a toshihiko connection with name CONN_NAME.

You may use a connection to define a model. e.g.

const conn = app.toshi.get('conn');
const User = conn.define('users', [
  ...
]);

And you can also define a model via default connection by calling app.toshi.define(). e.g.

const User = app.toshi.define('users', [
  ...
]);

Types

In package Toshihiko, the types that be used in defining are in require('toshihiko').Type. Here in egg-toshihiko, you may access types directly in app.toshi. e.g.

app.toshi.String;
app.toshi.Json;
app.toshi.Integer;
...

Example

Define a model first:

// app/model/user.js

module.exports = app => {
  const User = app.toshi.define('users', [
    { name: 'id', type: app.toshi.Integer, primaryKey: true },
    { name: 'username', type: app.toshi.String },
  ]);

  User.test = function() {
    return 'hello';
  };

  return User;
};

Now you can use it in your controller:

// app/controller/users.js

module.exports = app => {
  return class UsersController extends app.Controller {
    async show() {
      const user = await this.ctx.model.User.findById(this.ctx.params.id);
      this.ctx.body = user;
    }

    async create() {
      this.ctx.body = await app.model.User.build({
        username: this.ctx.request.body.username,
      }).save();
    }
  };
};

Questions & Suggestions

Please open an issue here.

License

MIT

关于
43.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802032778号