1.0.1-beta02 • Published 3 years ago

@jovercao/easy-data v1.0.1-beta02

Weekly downloads
-
License
ISC
Repository
gitlab
Last release
3 years ago

easy-data

数据变更自动追踪工具,自动分离增、删、改,用于做数据库提交事务

使用方法

追踪属性变更

const $ = require('easy-data')
const item = $({
    a: 'old-a',
    b: 'old-b'
})

console.log(item.status) // 'original'

item.a = 'new-a'
item.b = 'new-b'
item.c = 'add-c'

console.log(item.status) // 'modified'
console.log(item.$changeds())
// [
//    { property: 'a', oldValue: 'old-a', newValue: 'new-a'},
//    { property: 'b', oldValue: 'old-b', newValue: 'new-b'},
//    { property: 'c', newValue: 'add-c'}
// ]

item.$apply()

console.log(item.status) // 'original'
console.log(item.$changeds()) // []

对象状态

$status:

  • original - 原始状态
  • new - 新增状态
  • modified - 已修改状态
  • deleted - 已删除状态
  • invalid - 无效状态

原始状态 - original

未变化的状态

新建状态 - new

  • 在新建状态下,不会追踪属性变更
  • 撤销后,变为无效状态invalid
const $ = require('easy-data')
// 当不传递参数时,创建的对象为新建状态
const item = $()
console.log(item.status) // 'new'

item.a = 'add-a'
item.b = 'add-b'
item.c = 'add-c'

// 在新建状态下,不会追踪属性变更
console.log(item.$changeds()) // []

item.$apply()

console.log(item.status) // 'original'

修改状态 - modified

  • $apply,变为original
  • $reset,变更为original并丢失修改内容,恢复修改前数据
  • $delete,丢失修改内容,恢复修改前数据,并变更 为deleted

删除状态 - deleted

  • 删除状态下不允许修改
  • $reset,将恢复为原始状态original,并丢失数据变更
  • $apply,提交后将变为无效状态invalid
const $ = require('easy-data')
// 当不传递参数时,创建的对象为新建状态
const item = $({
    a: 'prop-a',
    b: 'prop-b'
})
console.log(item.status) // 'original'

item.a = 'new-prop-a'

console.log(item.status) // 'modified'

// 当调用删除时,会自动调用reset重置对象
item.$delete()

console.log(item) // { a: 'prop-a', b: 'prop-b' }
console.log(item.status) // 'deleted'

// 在删除状态下修改属性中,将获取得一个错误: 不允许修改已删除的对象
console.log(item.$changeds()) // []

item.$apply()

// 应用变更后,对象将变成无效状态
console.log(item.status) // 'invalid'
1.0.1-beta02

3 years ago

1.0.1-beta

3 years ago

1.0.0-beta07

3 years ago

1.0.0-beta05

4 years ago

1.0.0-beta06

4 years ago

1.0.0-beta04

4 years ago

1.0.0-beta03

4 years ago

1.0.0-beta01

4 years ago

1.0.0-beta02

4 years ago

0.1.0

4 years ago