unicloud-database.uvue 8.8 KB
Newer Older
雪洛's avatar
雪洛 已提交
1 2
<template>
  <!-- #ifdef APP -->
H
hdx 已提交
3
  <scroll-view class="page-scroll-view">
雪洛's avatar
雪洛 已提交
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
  <!-- #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>
H
hdx 已提交
24

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

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