本文根据 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 ->