Cheat Sheet速查表
跳转到主要内容

Modella 速查表

本文根据 Devhints / Modella 翻译。代码示例及版本范围沿用原文。

Modella 允许你在 JavaScript 中创建简单的模型。本指南介绍了如何在 CoffeeScript 中使用 Modella。

定义模型

User = Modella('User')
  .attr('name')
  .attr('email', { required: true })
  .use(require('modella-validators'))
  .validator (u) ->
    u.error('username', 'is required')  unless u.has('username')

实例

user
  .name()
  .name('John')
  .set(name: 'John')
  .has('name')   # → true
  .isNew()
  .isValid()
  .save (err) ->
  .remove (err) ->
  .removed
  .model         # === User

事件

触发(发送)

Model.emit('event', [data...])
record.emit('event', [data...])

事件列表

user
  .on 'save', ->
  .on 'create', ->
  .on 'saving', (data, done) -> done()
  .on 'remove', ->
  .on 'removing', (data, done) -> done()
  .on 'valid', ->
  .on 'invalid', ->
  .on 'change', ->
  .on 'change email', ->
  .on 'initializing', (instance, attrs) ->
  .on 'initialize', ->
  .on 'error', -> failed to save model
  .on 'setting', (instance, attrs) ->  # on Model#set()
  .on 'attr', -> # new attr via Model.attr()

杂项

插件 (Plugins)

MyPlugin = ->
  return (Model) ->

    Model.method = ...
    Model.prototype.method = ...
    Model.attr(...)

    Model

插件是一个返回“模型装饰器”的函数(即:接收一个模型作为参数,并返回一个模型的函数)。

内存

User
  .all (err, users) ->
  .find id, (err, user) ->
  .remove ->
  .save ->
  .update ->