unicloud-database.uvue 8.5 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 59 60
      notify(content : string, title : string) {
        if (!this.isUniTest) {
          uni.showModal({
            title,
            content,
            showCancel: false
          })
        } else {
          uni.showToast({
            title: content
          })
        }
      },
雪洛's avatar
雪洛 已提交
61 62 63 64 65 66 67 68 69
      dbAdd: function () {
        uni.showLoading({
          title: '加载中...'
        })
        const db = uniCloud.databaseForJQL()
        db.collection('type')
          .add({
            num: 1,
            tag: 'default-tag',
雪洛's avatar
雪洛 已提交
70
            date: new Date()
雪洛's avatar
雪洛 已提交
71
          })
雪洛's avatar
雪洛 已提交
72
          .then(res => {
雪洛's avatar
雪洛 已提交
73 74
            uni.hideLoading()
            console.log(res)
雪洛's avatar
雪洛 已提交
75
            this.addId = res.id
76
            this.notify(`新增成功,id: ${res.id}`, '提示')
雪洛's avatar
雪洛 已提交
77
          })
雪洛's avatar
雪洛 已提交
78
          .catch((err : any | null) => {
雪洛's avatar
雪洛 已提交
79 80
            uni.hideLoading()
            const error = err as UniCloudError
81
            this.notify(error.errMsg, '错误')
雪洛's avatar
雪洛 已提交
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
          })
      },
      dbBatchAdd() {
        uni.showLoading({
          title: '加载中...'
        })
        const db = uniCloud.databaseForJQL()
        db.collection('type')
          .add([{
            num: 2,
            tag: 'default-tag',
          }, {
            num: 3,
            tag: 'default-tag',
          }])
雪洛's avatar
雪洛 已提交
97
          .then((res) => {
雪洛's avatar
雪洛 已提交
98 99
            uni.hideLoading()
            console.log(res)
100
            console.log('JSON.stringify(res.inserted)', JSON.stringify(res.inserted))
雪洛's avatar
雪洛 已提交
101 102
            this.batchAddIds = res.ids
            this.batchAddinserted = res.inserted
103
            this.notify(`新增成功条数${res.inserted}, id列表: ${res.ids.join(',')}`, '提示')
雪洛's avatar
雪洛 已提交
104
          })
雪洛's avatar
雪洛 已提交
105
          .catch((err : any | null) => {
雪洛's avatar
雪洛 已提交
106 107
            uni.hideLoading()
            const error = err as UniCloudError
108
            this.notify(error.errMsg, '错误')
雪洛's avatar
雪洛 已提交
109 110
          })
      },
雪洛's avatar
雪洛 已提交
111
      dbGet() {
雪洛's avatar
雪洛 已提交
112 113 114 115 116 117 118 119
        uni.showLoading({
          title: '加载中...'
        })
        const db = uniCloud.databaseForJQL()
        db.collection('type')
          .where(
            'tag == "default-tag"'
          )
雪洛's avatar
雪洛 已提交
120 121 122 123 124
          .field('num, tag')
          .orderBy('num desc')
          .skip(1)
          .limit(2)
          .get()
雪洛's avatar
雪洛 已提交
125
          .then(res => {
雪洛's avatar
雪洛 已提交
126 127
            uni.hideLoading()
            console.log(res)
雪洛's avatar
雪洛 已提交
128
            this.getData = res.data
129
            this.notify(`获取成功,取到了${res.data.length}条数据`, '提示')
雪洛's avatar
雪洛 已提交
130
          })
雪洛's avatar
雪洛 已提交
131
          .catch((err : any | null) => {
雪洛's avatar
雪洛 已提交
132 133
            uni.hideLoading()
            const error = err as UniCloudError
134
            this.notify(error.errMsg, '错误')
雪洛's avatar
雪洛 已提交
135 136
          })
      },
雪洛's avatar
雪洛 已提交
137
      dbGetWithCommand() {
雪洛's avatar
雪洛 已提交
138 139 140 141 142
        uni.showLoading({
          title: '加载中...'
        })
        const db = uniCloud.databaseForJQL()
        db.collection('type')
雪洛's avatar
雪洛 已提交
143 144 145
          .where({
            num: db.command.gt(1)
          })
雪洛's avatar
雪洛 已提交
146 147 148 149 150
          .field('num, tag')
          .orderBy('num desc')
          .skip(1)
          .limit(2)
          .get()
雪洛's avatar
雪洛 已提交
151
          .then(res => {
雪洛's avatar
雪洛 已提交
152 153
            uni.hideLoading()
            console.log(res)
雪洛's avatar
雪洛 已提交
154
            this.getWithCommandData = res.data
155
            this.notify(`获取成功,取到了${res.data.length}条数据`, '提示')
雪洛's avatar
雪洛 已提交
156
          })
雪洛's avatar
雪洛 已提交
157
          .catch((err : any | null) => {
雪洛's avatar
雪洛 已提交
158 159
            uni.hideLoading()
            const error = err as UniCloudError
160
            this.notify(error.errMsg, '错误')
雪洛's avatar
雪洛 已提交
161 162
          })
      },
雪洛's avatar
雪洛 已提交
163
      dbUpdate() {
雪洛's avatar
雪洛 已提交
164 165 166 167 168
        uni.showLoading({
          title: '加载中...'
        })
        const db = uniCloud.databaseForJQL()
        db.collection('type')
雪洛's avatar
雪洛 已提交
169 170 171 172 173
          .where(
            'tag == "default-tag"'
          )
          .update({
            num: 4
雪洛's avatar
雪洛 已提交
174
          })
雪洛's avatar
雪洛 已提交
175
          .then(res => {
雪洛's avatar
雪洛 已提交
176 177
            uni.hideLoading()
            console.log(res)
雪洛's avatar
雪洛 已提交
178
            this.updateUpdated = res.updated
179
            this.notify(`更新成功,更新了${res.updated}条数据`, '提示')
雪洛's avatar
雪洛 已提交
180
          })
雪洛's avatar
雪洛 已提交
181
          .catch((err : any | null) => {
雪洛's avatar
雪洛 已提交
182 183
            uni.hideLoading()
            const error = err as UniCloudError
184
            this.notify(error.errMsg, '错误')
雪洛's avatar
雪洛 已提交
185 186 187 188 189 190 191 192 193 194 195 196
          })
      },
      dbRemove() {
        uni.showLoading({
          title: '加载中...'
        })
        const db = uniCloud.databaseForJQL()
        db.collection('type')
          .where(
            'tag == "default-tag"'
          )
          .remove()
雪洛's avatar
雪洛 已提交
197
          .then(res => {
雪洛's avatar
雪洛 已提交
198 199
            uni.hideLoading()
            console.log(res)
雪洛's avatar
雪洛 已提交
200
            this.removeDeleted = res.deleted
201
            this.notify(`删除成功,删掉了${res.deleted}条数据`, '提示')
雪洛's avatar
雪洛 已提交
202
          })
雪洛's avatar
雪洛 已提交
203
          .catch((err : any | null) => {
雪洛's avatar
雪洛 已提交
204 205
            uni.hideLoading()
            const error = err as UniCloudError
206
            this.notify(error.errMsg, '错误')
雪洛's avatar
雪洛 已提交
207 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
          })
      },
      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
雪洛 已提交
248
          .then((_) : void => {
雪洛's avatar
雪洛 已提交
249
            uni.hideLoading()
250
            this.notify('数据初始化成功', '提示')
雪洛's avatar
雪洛 已提交
251
          })
雪洛's avatar
雪洛 已提交
252
          .catch((err : any | null) => {
雪洛's avatar
雪洛 已提交
253 254 255
            uni.hideLoading()
            console.error(err)
            const error = err as UniCloudError
256
            this.notify(error.errMsg, '错误')
雪洛's avatar
雪洛 已提交
257 258 259 260 261 262 263 264 265 266 267 268 269 270 271
          })
      },
      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
雪洛 已提交
272
          .then(res => {
雪洛's avatar
雪洛 已提交
273 274
            uni.hideLoading()
            console.log(res)
雪洛's avatar
雪洛 已提交
275
            this.lookupData = res.data
276
            this.notify(`联表查询成功,取到了${res.data.length}条数据`, '提示')
雪洛's avatar
雪洛 已提交
277
          })
雪洛's avatar
雪洛 已提交
278
          .catch((err : any | null) => {
雪洛's avatar
雪洛 已提交
279 280
            uni.hideLoading()
            const error = err as UniCloudError
281
            this.notify(error.errMsg, '错误')
雪洛's avatar
雪洛 已提交
282 283 284 285 286 287 288
          })
      }
    }
  }
</script>

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