unicloud-import-object.uvue 3.6 KB
Newer Older
1 2 3
<template>
  <!-- #ifdef APP -->
  <scroll-view style="flex:1">
雪洛's avatar
雪洛 已提交
4
  <!-- #endif -->
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
    <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" @tap="addTodo">添加Todo</button>
        </view>
        <view class="uni-btn-v uni-common-mt">
          <button type="primary" @tap="randomFail">随机触发失败重试</button>
        </view>
        <view class="uni-btn-v uni-common-mt">
          <button type="primary" @tap="fail">云对象失败调用</button>
        </view>
        <view class="uni-btn-v uni-common-mt">
          <button type="primary" @tap="success">云对象成功调用</button>
        </view>
      </view>
    </view>
雪洛's avatar
雪洛 已提交
22
  <!-- #ifdef APP -->
23 24 25 26 27 28 29 30
  </scroll-view>
  <!-- #endif -->
</template>

<script>
  export default {
    data() {
      return {
雪洛's avatar
雪洛 已提交
31 32 33 34 35 36
        title: '请求云对象',
        todoTitle: '学习编程',
        todoContent: '熟悉uts语法',
        returnTodoTitle: '',
        returnTodoContent: '',
        failErrCode: '',
37 38
        successErrCode: -1,
        isUniTest: false
39 40 41
      }
    },
    methods: {
42 43 44 45 46 47 48 49 50 51 52 53 54
      notify(content : string, title : string) {
        if (!this.isUniTest) {
          uni.showModal({
            title,
            content,
            showCancel: false
          })
        } else {
          uni.showToast({
            title: content
          })
        }
      },
55
      addTodo() {
56 57 58
        const todo = uniCloud.importObject('todo', {
          customUI: this.isUniTest
        })
雪洛's avatar
雪洛 已提交
59 60 61 62 63
        const title = this.todoTitle
        const content = this.todoContent
        todo.add(title, content).then<void>((res : UTSJSONObject) : void => {
          this.returnTodoTitle = res['title'] as string
          this.returnTodoContent = res['content'] as string
64
          this.notify(res['showMessage'] as string, '提示')
65 66 67 68 69 70 71 72 73 74 75
        }).catch<void>((err : any | null) : void => {
          const error = err as UniCloudError
          console.error(error)
        })
      },
      randomFail() {
        const todoObj = uniCloud.importObject('todo', {
          errorOptions: {
            retry: true
          }
        })
雪洛's avatar
雪洛 已提交
76
        todoObj.randomFail().then<void>((res : UTSJSONObject) : void => {
77
          this.notify(res['showMessage'] as string, '提示')
78 79 80 81 82 83
        }).catch<void>((err : any | null) : void => {
          const error = err as UniCloudError
          console.error(error)
        })
      },
      fail() {
84 85 86
        const todo = uniCloud.importObject('todo', {
          customUI: this.isUniTest
        })
雪洛's avatar
雪洛 已提交
87
        todo.fail().then<void>((res : UTSJSONObject) : void => {
88
          this.notify('todo.fail应调用失败,此处错误的触发了成功回调', '错误')
89 90 91
          console.log('todo.fail: ', res);
        }).catch<void>((err : any | null) : void => {
          const error = err as UniCloudError
雪洛's avatar
雪洛 已提交
92
          this.failErrCode = error.errCode as string
93
          console.error(error)
94 95 96 97 98
          if (this.isUniTest) {
            uni.showToast({
              title: err.errMsg
            })
          }
99 100 101
        })
      },
      success() {
102 103 104
        const todo = uniCloud.importObject('todo', {
          customUI: this.isUniTest
        })
雪洛's avatar
雪洛 已提交
105 106
        todo.success().then<void>((res : UTSJSONObject) : void => {
          this.successErrCode = res['errCode'] as number
107
          this.notify(res['showMessage'] as string, '提示')
108 109 110 111 112 113 114 115 116 117 118
        }).catch<void>((err : any | null) : void => {
          const error = err as UniCloudError
          console.error(error)
        })
      }
    }
  }
</script>

<style>

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