【商城源码】把localStorage当作数据库使用实现了增删改查,用ts(typescript)封装实现了类似mongodb的非关系型数据库,功能很强大。
具有的5大优势:
- 可以存储任意类型的数据,包括undefined等任意数据,在浏览器和微信开发者工具等任何平台下都不会报错。
- 全程使用ts语言进行数据库的增删改查,抛弃了复杂较难理解数据库的语言,仅使用ts语言的较少的api即可完成增删改查所有功能,提供的api非常简单易学,非常简单易学,非常简单易学!
- 可以对数据库进行加密,仅分别使用2个api即可实现自定义的数据加密与解密,保护数据安全。
- 可以导入导出备份数据,保护数据安全。
- 极高的性能,用最少的代码实现了很多实用的功能。
常用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商城