【商城源码】把localStorage当作数据库使用ts实现了增删改查

【商城源码】把localStorage当作数据库使用实现了增删改查,用ts(typescript)封装实现了类似mongodb的非关系型数据库,功能很强大。

具有的5大优势:

  1. 可以存储任意类型的数据,包括undefined等任意数据,在浏览器和微信开发者工具等任何平台下都不会报错。
  2. 全程使用ts语言进行数据库的增删改查,抛弃了复杂较难理解数据库的语言,仅使用ts语言的较少的api即可完成增删改查所有功能,提供的api非常简单易学,非常简单易学,非常简单易学!
  3. 可以对数据库进行加密,仅分别使用2个api即可实现自定义的数据加密与解密,保护数据安全。
  4. 可以导入导出备份数据,保护数据安全。
  5. 极高的性能,用最少的代码实现了很多实用的功能。

常用api使用示例:

创建集合:

// db 是数据库的全局单例

// 获取一个集合,集合不存在会自动创建,无需其它处理
db.collection(集合名字)

增加一条或多条数据:

// 增加一条文档数据: { name: 'Tom', age: 18 }

// 注意这里的Person是传入的类型,若不想要类型约束可以传入any
type Person = { name: string, age: number }

const result = db.collection('test').insertOne<Person>({ name: 'Tom', age: 18 })
console.log(result)

// 控制台打印:
{nInserted: 1, _id: '67c6da31a8u2YgLA', data: {...} } // 增加了1条记录


// 增加多条文档数据,数据要放入数组
const result = db.collection('test').insertMany<Person>([{ name: 'Jery', age: 24 }, { name: 'Anqi', age: 12 }])
console.log(result)

// 控制台打印:
{nInserted: 2, _ids: Array(2), datas: {...}} // 增加了2条数据

查询一条或多条数据:

// 查询一条文档数据:对象的name属性为'Tom'
const result = db.collection('test').findOne<any>(item => item.name === 'Tom')
console.log(result)

// 控制台打印: 查询到数据:{ name: 'Tom', age: 18 }
{ 
  data: { name: 'Tom', age: 18 },
  _id: "67c6da31a8u2YgLA"
}


// 查询多条文档数据:对象的age属性小于30的所有数据
db.collection('test').find<any>(item => item.age < 30).datas

// 美化打印使用prettyData方法
db.collection('test').find<any>(item => item.age < 30).prettyData()

// 控制台打印:
[
  {
    "name": "Tom",
    "age": 18
  },
  {
    "name": "Jery",
    "age": 24
  },
  {
    "name": "Anqi",
    "age": 12
  }
]

更新一条或多条数据:

// 更新一条文档数据:
const result = db.collection('test').updateOne<any>(item => {
  if (item.name === 'Tom') { // 查找一条对象的name属性为'Tom'的数据
    item.name = 'Jery' // 把该对象的name属性修改为'Jery'
    return {                 
      update: true, // 返回true则修改该数据,返回false或不返回则不修改  
      data: item    // 修改的数据传入这里
    }
  }
})
console.log(result)

// 控制台打印如下:
{updateCount: 1, _id: '67c6da31a8u2YgLA', data: {...} } // 修改了1条数据


// 更新多条文档数据
const result = db.collection('test').updateMany<any>(item => {
  if (item.name === 'Jery') { // 查找所有对象的name属性为'Jery'的数据
    item.name = 'Anqi' // 把查找到的所有对象的name属性修改为'Anqi'
    return {
      update: true, // 返回true则修改该数据,返回false或不返回则不修改   
      data: item // 修改的数据传入这里
    }
  }
})
console.log(result)

// 控制台打印:
{updateCount: 2, _ids: Array(2), datas: {...} } // 修改了2条数据

删除一条或多条数据:

// 删除一条文档数据
const result = db.collection('test').deleteOne<any>(item => {
  if (item.name === 'Anqi') { // 找到对象的name属性为'Anqi'的一条数据
    return true    // 返回true则删除该数据,返回false或不返回则不删除
  }
})
console.log(result)

// 控制台打印:
{deleteCount: 1, _id: '67c6da31a8u2YgLA', data: {...}} // 删除了1条数据


// 删除多条文档数据
const result = db.collection('test').deleteMany<any>(item => {
  if (item.name === 'Jery') { // 找到对象的name属性为'Jery'的一条数据
    return true // 返回true则删除该数据,返回false或不返回则不删除
  }
})
console.log(result)

// 控制台打印:
{deleteCount: 2, _ids: Array(2), datas: {...}} // 删除了2条数据

恭喜你,看到这里数据库的基本操作已掌握了,更多的api文档请到商城查看(限时7天超低优惠):Cocos Store
cocos商城