unicloud-database.uvue 8.6 KB
Newer Older
雪洛's avatar
雪洛 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
<template>
  <!-- #ifdef APP -->
  <scroll-view style="flex: 1">
  <!-- #endif -->
    <view>
      <page-head :title="title"></page-head>
      <view class="uni-padding-wrap uni-common-mt">
        <view class="uni-btn-v uni-common-mt">
          <button type="primary" @click="dbAdd">新增单条数据</button>
          <button type="primary" @click="dbBatchAdd">新增多条数据</button>
          <button type="primary" @click="dbUpdate">更新数据</button>
          <button type="primary" @click="dbGet">where传字符串获取数据</button>
          <button type="primary" @click="dbGetWithCommand">where传对象获取数据</button>
          <button type="primary" @click="dbRemove">删除数据</button>
          <button type="primary" @click="dbLookupInit">初始化联表查询数据</button>
          <button type="primary" @click="dbLookup">联表查询</button>
        </view>
      </view>
    </view>
  <!-- #ifdef APP -->
  </scroll-view>
  <!-- #endif -->
</template>
<script>
  export default {
    data() {
      return {
雪洛's avatar
雪洛 已提交
28 29 30 31 32 33 34 35 36
        title: 'ClientDB',
        addId: '',
        batchAddIds: [] as Array<string>,
        batchAddinserted: 0,
        updateUpdated: 0,
        getData: [] as Array<UTSJSONObject>,
        getWithCommandData: [] as Array<UTSJSONObject>,
        removeDeleted: 0,
        lookupData: [] as Array<UTSJSONObject>,
37
        isUniTest: false
雪洛's avatar
雪洛 已提交
38 39 40 41 42
      }
    },
    onLoad() {
    },
    onUnload() {
43 44 45
      if(this.isUniTest){
        uni.hideToast()
      }
雪洛's avatar
雪洛 已提交
46 47
    },
    methods: {
48 49 50 51 52 53 54 55 56 57 58
      notify(content : string, title : string) {
        if (!this.isUniTest) {
          uni.showModal({
            title,
            content,
            showCancel: false
          })
        } else {
          uni.showToast({
            title: content
          })
59
          console.log(title, content)
60 61
        }
      },
雪洛's avatar
雪洛 已提交
62 63 64 65 66 67 68 69 70
      dbAdd: function () {
        uni.showLoading({
          title: '加载中...'
        })
        const db = uniCloud.databaseForJQL()
        db.collection('type')
          .add({
            num: 1,
            tag: 'default-tag',
雪洛's avatar
雪洛 已提交
71
            date: new Date()
雪洛's avatar
雪洛 已提交
72
          })
雪洛's avatar
雪洛 已提交
73
          .then(res => {
雪洛's avatar
雪洛 已提交
74 75
            uni.hideLoading()
            console.log(res)
雪洛's avatar
雪洛 已提交
76
            this.addId = res.id
77
            this.notify(`新增成功,id: ${res.id}`, '提示')
雪洛's avatar
雪洛 已提交
78
          })
雪洛's avatar
雪洛 已提交
79
          .catch((err : any | null) => {
雪洛's avatar
雪洛 已提交
80 81
            uni.hideLoading()
            const error = err as UniCloudError
82
            this.notify(error.errMsg, '错误')
雪洛's avatar
雪洛 已提交
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
          })
      },
      dbBatchAdd() {
        uni.showLoading({
          title: '加载中...'
        })
        const db = uniCloud.databaseForJQL()
        db.collection('type')
          .add([{
            num: 2,
            tag: 'default-tag',
          }, {
            num: 3,
            tag: 'default-tag',
          }])
雪洛's avatar
雪洛 已提交
98
          .then((res) => {
雪洛's avatar
雪洛 已提交
99 100
            uni.hideLoading()
            console.log(res)
101
            console.log('JSON.stringify(res.inserted)', JSON.stringify(res.inserted))
雪洛's avatar
雪洛 已提交
102 103
            this.batchAddIds = res.ids
            this.batchAddinserted = res.inserted
104
            this.notify(`新增成功条数${res.inserted}, id列表: ${res.ids.join(',')}`, '提示')
雪洛's avatar
雪洛 已提交
105
          })
雪洛's avatar
雪洛 已提交
106
          .catch((err : any | null) => {
雪洛's avatar
雪洛 已提交
107 108
            uni.hideLoading()
            const error = err as UniCloudError
109
            this.notify(error.errMsg, '错误')
雪洛's avatar
雪洛 已提交
110 111
          })
      },
雪洛's avatar
雪洛 已提交
112
      dbGet() {
雪洛's avatar
雪洛 已提交
113 114 115 116 117 118 119 120
        uni.showLoading({
          title: '加载中...'
        })
        const db = uniCloud.databaseForJQL()
        db.collection('type')
          .where(
            'tag == "default-tag"'
          )
雪洛's avatar
雪洛 已提交
121 122 123 124 125
          .field('num, tag')
          .orderBy('num desc')
          .skip(1)
          .limit(2)
          .get()
雪洛's avatar
雪洛 已提交
126
          .then(res => {
雪洛's avatar
雪洛 已提交
127 128
            uni.hideLoading()
            console.log(res)
雪洛's avatar
雪洛 已提交
129
            this.getData = res.data
130
            this.notify(`获取成功,取到了${res.data.length}条数据`, '提示')
雪洛's avatar
雪洛 已提交
131
          })
雪洛's avatar
雪洛 已提交
132
          .catch((err : any | null) => {
雪洛's avatar
雪洛 已提交
133 134
            uni.hideLoading()
            const error = err as UniCloudError
135
            this.notify(error.errMsg, '错误')
雪洛's avatar
雪洛 已提交
136 137
          })
      },
雪洛's avatar
雪洛 已提交
138
      dbGetWithCommand() {
雪洛's avatar
雪洛 已提交
139 140 141 142 143
        uni.showLoading({
          title: '加载中...'
        })
        const db = uniCloud.databaseForJQL()
        db.collection('type')
雪洛's avatar
雪洛 已提交
144 145 146
          .where({
            num: db.command.gt(1)
          })
雪洛's avatar
雪洛 已提交
147 148 149 150 151
          .field('num, tag')
          .orderBy('num desc')
          .skip(1)
          .limit(2)
          .get()
雪洛's avatar
雪洛 已提交
152
          .then(res => {
雪洛's avatar
雪洛 已提交
153 154
            uni.hideLoading()
            console.log(res)
雪洛's avatar
雪洛 已提交
155
            this.getWithCommandData = res.data
156
            this.notify(`获取成功,取到了${res.data.length}条数据`, '提示')
雪洛's avatar
雪洛 已提交
157
          })
雪洛's avatar
雪洛 已提交
158
          .catch((err : any | null) => {
雪洛's avatar
雪洛 已提交
159 160
            uni.hideLoading()
            const error = err as UniCloudError
161
            this.notify(error.errMsg, '错误')
雪洛's avatar
雪洛 已提交
162 163
          })
      },
雪洛's avatar
雪洛 已提交
164
      dbUpdate() {
雪洛's avatar
雪洛 已提交
165 166 167 168 169
        uni.showLoading({
          title: '加载中...'
        })
        const db = uniCloud.databaseForJQL()
        db.collection('type')
雪洛's avatar
雪洛 已提交
170 171 172 173 174
          .where(
            'tag == "default-tag"'
          )
          .update({
            num: 4
雪洛's avatar
雪洛 已提交
175
          })
雪洛's avatar
雪洛 已提交
176
          .then(res => {
雪洛's avatar
雪洛 已提交
177 178
            uni.hideLoading()
            console.log(res)
雪洛's avatar
雪洛 已提交
179
            this.updateUpdated = res.updated
180
            this.notify(`更新成功,更新了${res.updated}条数据`, '提示')
雪洛's avatar
雪洛 已提交
181
          })
雪洛's avatar
雪洛 已提交
182
          .catch((err : any | null) => {
雪洛's avatar
雪洛 已提交
183 184
            uni.hideLoading()
            const error = err as UniCloudError
185
            this.notify(error.errMsg, '错误')
雪洛's avatar
雪洛 已提交
186 187 188 189 190 191 192 193 194 195 196 197
          })
      },
      dbRemove() {
        uni.showLoading({
          title: '加载中...'
        })
        const db = uniCloud.databaseForJQL()
        db.collection('type')
          .where(
            'tag == "default-tag"'
          )
          .remove()
雪洛's avatar
雪洛 已提交
198
          .then(res => {
雪洛's avatar
雪洛 已提交
199 200
            uni.hideLoading()
            console.log(res)
雪洛's avatar
雪洛 已提交
201
            this.removeDeleted = res.deleted
202
            this.notify(`删除成功,删掉了${res.deleted}条数据`, '提示')
雪洛's avatar
雪洛 已提交
203
          })
雪洛's avatar
雪洛 已提交
204
          .catch((err : any | null) => {
雪洛's avatar
雪洛 已提交
205 206
            uni.hideLoading()
            const error = err as UniCloudError
207
            this.notify(error.errMsg, '错误')
雪洛's avatar
雪洛 已提交
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248
          })
      },
      dbLookupInit() {
        uni.showLoading({
          title: '加载中...'
        })
        const db = uniCloud.databaseForJQL()
        db.collection('local')
          .where('tag == "default-tag"')
          .remove()
          .then(() : Promise<UniCloudDBRemoveResult> => {
            return db.collection('foreign')
              .where('tag == "default-tag"')
              .remove()
          })
          .then(() : Promise<UniCloudDBBatchAddResult> => {
            return db.collection('local')
              .add([{
                id: "local_1",
                name: "local_1_name",
                tag: "default-tag",
                foreign_id: "foreign_1"
              }, {
                id: "local_2",
                name: "local_2_name",
                tag: "default-tag",
                foreign_id: "foreign_2"
              }])
          })
          .then(() : Promise<UniCloudDBBatchAddResult> => {
            return db.collection('foreign')
              .add([{
                id: "foreign_1",
                name: "foreign_1_name",
                tag: "default-tag"
              }, {
                id: "foreign_2",
                name: "foreign_2_name",
                tag: "default-tag"
              }])
          })
雪洛's avatar
雪洛 已提交
249
          .then((_) : void => {
雪洛's avatar
雪洛 已提交
250
            uni.hideLoading()
251
            this.notify('数据初始化成功', '提示')
雪洛's avatar
雪洛 已提交
252
          })
雪洛's avatar
雪洛 已提交
253
          .catch((err : any | null) => {
雪洛's avatar
雪洛 已提交
254 255 256
            uni.hideLoading()
            console.error(err)
            const error = err as UniCloudError
257
            this.notify(error.errMsg, '错误')
雪洛's avatar
雪洛 已提交
258 259 260 261 262 263 264 265 266 267 268 269 270 271 272
          })
      },
      dbLookup() {
        uni.showLoading({
          title: '加载中...'
        })
        const db = uniCloud.databaseForJQL()
        const local = db.collection('local')
          .where('tag == "default-tag"')
          .getTemp()
        const foreign = db.collection('foreign')
          .where('tag == "default-tag"')
          .getTemp()
        db.collection(local, foreign)
          .get()
雪洛's avatar
雪洛 已提交
273
          .then(res => {
雪洛's avatar
雪洛 已提交
274 275
            uni.hideLoading()
            console.log(res)
雪洛's avatar
雪洛 已提交
276
            this.lookupData = res.data
277
            this.notify(`联表查询成功,取到了${res.data.length}条数据`, '提示')
雪洛's avatar
雪洛 已提交
278
          })
雪洛's avatar
雪洛 已提交
279
          .catch((err : any | null) => {
雪洛's avatar
雪洛 已提交
280 281
            uni.hideLoading()
            const error = err as UniCloudError
282
            this.notify(error.errMsg, '错误')
雪洛's avatar
雪洛 已提交
283 284 285 286 287 288 289
          })
      }
    }
  }
</script>

<style>
雪洛's avatar
雪洛 已提交
290
</style>