5***@qq.com
5***@qq.com
  • 发布:2023-06-26 00:22
  • 更新:2023-06-28 20:43
  • 阅读:303

cloudDB触发器无法触发

分类:uniCloud

我自己创建了一个表,想着可以使用触发器在新增数据的时候自动添加上创建时间,跟着文档上面配置了一下

schema扩展如下

module.exports = {  
    trigger: {  
        beforeCreate: async function({  
            collection,  
            operation,  
            addDataList  
        } = {}) {  
            console.log("这个触发器被触发了")  
            addDataList.forEach(_ => {  
                _.create_time = Date.now()  
            })  
        }  
    }  
}

使用db.collection('collection').add({name:'名称'})新增后在云数据库里面并没有发现create_time字段的数据,是我哪里设置的问题么?

2023-06-26 00:22 负责人:无 分享
已邀请:
DCloud_uniCloud_VK

DCloud_uniCloud_VK

你是在前端操作的数据库还是云函数?
如果是云函数,需要用 JQL语法

  • 5***@qq.com (作者)

    前端操作的,代码如下


    db.collection('collection').add({name:'名称'})

    同时我在JQL调试器中使用也无法触发

    2023-06-26 13:15

  • DCloud_uniCloud_VK

    回复 5***@qq.com: JQL调试器中本身就不会触发的, 那你上传下触发器

    2023-06-26 14:04

  • 5***@qq.com (作者)

    回复 DCloud_uniCloud_VK: 触发器已经上传了,在云端数据库的schema扩展里面可以看到

    2023-06-26 16:25

  • 觅兔先生

    我在unicloud-db中触发 触发器,docId拿不到

    2023-12-05 01:15

5***@qq.com

5***@qq.com (作者)

触发器文件

  • DCloud_uniCloud_WYQ

    你上面说的db.collection('collection').add({name:'名称'})这段代码写在哪个文件里面了

    2023-06-27 18:20

5***@qq.com

5***@qq.com (作者)

这个是前端页面的调用代码

<template>  
    <uni-popup ref="add" type="center" :isMaskClick="false">  
        <uni-forms ref="form" v-model="data.formData" :rules="data.rules" class="form">  
            <uni-forms-item name="name" label="名称:">  
                <uni-easyinput placeholder="请输入名称" v-model="data.formData.name" trim="both"></uni-easyinput>  
            </uni-forms-item>  
            <view style="display: flex;">  
                <button type="primary" @click="confirm" size="mini" :loading="data.loading">确定</button>  
                <button type="primary" @click="hide" plain size="mini">取消</button>  
            </view>  
        </uni-forms>  
    </uni-popup>  
</template>  

<script setup>  
    import {  
        getCurrentInstance,  
        onMounted,  
        reactive  
    } from "vue"  
    import {  
        onLoad,  
        onShow,  
        onHide  
    } from "@dcloudio/uni-app"  
    const db = uniCloud.database()  
    const dbCollectionName = 'rent_shop-category'  
    const data = reactive({  
        id: '',  
        loading: false,  
        formData: {  
            name: ''  
        },  
        rules: {  
            name: {  
                rules: [{  
                    required: true,  
                    errorMessage: '请输入名称'  
                }],  
                validateTrigger: 'submit'  
            }  
        }  
    })  
    const {  
        proxy,  
        emit  
    } = getCurrentInstance()  
    onMounted(() => {  

    })  
    onLoad((res) => {  

    })  
    onShow(() => {  

    })  
    onHide(() => {  

    })  

    function show(para = {}) {  
        data.id = para.id  
        data.formData.name = para.name  
        proxy.$refs.add.open()  
    }  

    function hide() {  
        proxy.$refs.add.close()  
    }  

    function confirm() {  
        proxy.$refs.form.validate().then(values => {  
            uni.showLoading({  
                mask: true  
            })  
            db.collection(dbCollectionName).add(values).then((res) => {  
                uni.showToast({  
                    title: '新增成功'  
                })  
                emit('confirm')  
            }).catch((err) => {  
                uni.showModal({  
                    content: err.message || '请求服务失败',  
                    showCancel: false  
                })  
            }).finally(() => {  
                uni.hideLoading()  
            })  
        })  
    }  

    defineExpose({  
        show,  
        hide  
    })  
</script>  

<style lang="scss" scoped>  
    .form {  
        background-color: white;  
        border-radius: 12px;  
        padding: 20px;  
        width: 300px;  
    }  
</style>
LAO_WUUAN

LAO_WUUAN

俺也一样

5***@qq.com

5***@qq.com (作者)

问题解决啦,
我把原来的ext.js 扩展删掉了,然后又重新上传了一份后可以触发了
下面附带我自己写的调用方式,如果有同样问题的小伙伴可以参考一下

要回复问题请先登录注册