鸿蒙云数据库封装

import { Database, ObjectTypeInfo } from '@hw-agconnect/cloud/src/main/ets/database/Database'
import cloud from '@hw-agconnect/cloud'
import buffer from '@ohos.buffer'

// 云数据操作
export class CloudDataBase{

  static cloudDataBase:Database|null

  static async getCloudDatabase(){
    if (!CloudDataBase.cloudDataBase) {


      let value=await getContext().resourceManager.getRawFileContent('schema.json')
      let json=buffer.from(value as ArrayBufferLike).toString('utf-8')

      CloudDataBase.cloudDataBase=cloud.database({
        objectTypeInfo:JSON.parse(json) as ObjectTypeInfo ,
        zoneName:'question'//云中建的数据库名称
      })

    }
    return CloudDataBase.cloudDataBase
  }
}

操作数据库的表:

import { CloudDataBase } from '.'
import { UserInfo } from '../../models/question'


// 对云中的userinfo表中的增删改查
export class UserService{

  //拿到了用户的这张表
  static async getUserDatabase(){
    let database=await CloudDataBase.getCloudDatabase();
    return database.collection<UserInfo>(UserInfo)//拿到了用户的这张表
  }

  /**
   *基础示例
   * */
  static async testInfo(userId:string){
    let database=await CloudDataBase.getCloudDatabase();
    let res=await database.collection<UserInfo>(UserInfo)
      .query()
      .limit(1)
      .equalTo('user_id',userId)//比对,条件
      .get()//拿到结果,是异步
    return res
  }

  static async getUserInfo(userId:string){
    let res=(await UserService.getUserDatabase())
      .query()
      .limit(1)
      .equalTo('user_id',userId)//比对,条件
      .get()//拿到结果,是异步

    return res
  }

  /**
   * 可用
   * */
  static async updataUserInfo(user:UserInfo){
    let res=(await UserService.getUserDatabase())
      .upsert(user)
    return res
  }
}


export class QuestionInfo{
  static className:string='question_info'
  id:number|null=null
  classify_id:number=0
  paper_id:number=0
  title:string=''
  order:number=0
  question_type:string=''
  answer_letter:string=''
  answer_text:string=''
  answer_solution:string=''

}

export class UserInfo{
  static className:string='user_info'//和云数据库中的表名一致
  id:number|null=null
  avatar:string=''
  nick_name:string=''
  user_id:string=''
  phone:string=''

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
wx开发中的数据库封装是指将常用的数据库操作封装成函数或方法,以便开发者更方便地对数据库进行增删改查等操作。 首先,wx开发中的数据库是基于NoSQL的数据库,它的优点是无需额外的服务器搭建,有着高可用、高性能、弹性伸缩等特点,可以满足小程序开发中的数据存储需求。 在进行数据库操作时,我们首先需要在小程序的开发控制台中创建数据库集合,相当于传统数据库中的表。然后,我们可以在小程序的代码中引入wx.cloud.api对象来进行数据库的增删改查等操作。 封装数据库操作可以提高代码复用性和可维护性。我们可以将常用的数据库操作封装成函数,例如新增数据、删除数据、更新数据和查询数据等。以新增数据为例,我们可以写一个函数insertData,通过调用该函数传入集合名和要插入的数据,就可以将数据插入到指定的集合中。 对于一些更复杂的数据库操作,我们也可以封装成方法。方法相对于函数来说更具有面向对象的特点,可以更好地实现对数据库操作的封装和扩展。 封装数据库操作的好处是可以简化代码,提高开发效率。当数据操作发生变化时,只需要在封装的函数或方法中修改逻辑,而不需要在每个调用处逐一修改,减少了代码维护成本。 总之,wx开发中的数据库封装可以让开发者更轻松地操作数据库,提高了开发效率和代码复用性,是小程序开发中常用的技术手段之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jian11058

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值