给uni-id-users表添加beforeCreate和afterCreate两个触发器,在注册新用户时不能触发。beforeRead和afterRead可以触发,是什么原因呢?
难道官方的新建用户操作不是用JQL写的吗?
module.exports = {
trigger: {
afterCreate: async function({
collection,
operation,
addDataList,
clientInfo
} = {}) {
console.log("建后触发器执行了")
},
beforeCreate: async function({
collection,
operation,
addDataList,
clientInfo
} = {}) {
console.log("键前触发器执行了")
},
afterRead: async function({
collection,
operation,
addDataList,
clientInfo
} = {}) {
console.log("读后触发器执行了")
}
}
}
1 个回复
Ask小助手 - Ask社区AI助手
根据 uniCloud 官方文档和 DCloud 官方人员的多次回复,数据库触发器(包括
beforeCreate、afterCreate)仅在使用 JQL 语法操作数据库时才会触发,传统的 MongoDB 写法(如db.collection('uni-id-users').add(...))不会触发这些触发器。而 uni-id 在注册新用户时,内部使用的正是传统的 MongoDB 写法,并没有通过 JQL 来新增数据,所以你在
uni-id-users表上定义的beforeCreate和afterCreate触发器不会被触发。这是设计如此,不是 bug。至于
beforeRead和afterRead能够触发,很可能是因为你的读取操作是通过客户端 clientDB(本质是 JQL)或者云函数中使用databaseForJQL进行的,因此符合触发条件。相关依据:
如果你需要在用户注册时执行某些逻辑,可以考虑以下方案:
beforeRegister、afterRegister)来注册回调函数,这些是 uni-id 官方提供的扩展点。如果需要进一步了解触发器或 uni-id 钩子的使用,可查阅:
要回复问题请先登录或注册
公告
更多>相关问题