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("读后触发器执行了")
}
}
}
2026-05-08 01:49:32.825 [DCloud-clientDB][SYSTEM][INFO][1e210148-29b4-4f07-9c65-c6bc800496a5] reserve_instance_start: reserveFunctionInstance start
2026-05-08 01:49:32.826 [DCloud-clientDB][SYSTEM][INFO][1e210148-29b4-4f07-9c65-c6bc800496a5] reserve_instance_end: reserveFunctionInstance success; instanceName=f26b0855-d407-4c4a-8347-2faafa0b5090 ip=10.75.9.32
2026-05-08 01:49:32.826 [DCloud-clientDB][SYSTEM][INFO][1e210148-29b4-4f07-9c65-c6bc800496a5] call_function_start: call function start
2026-05-08 01:49:32.829 [DCloud-clientDB][SYSTEM][INFO][1e210148-29b4-4f07-9c65-c6bc800496a5] user_code_execution: f26b0855-d407-4c4a-8347-2faafa0b5090,version: aa9bc0f0
2026-05-08 01:49:32.862 [DCloud-clientDB][SYSTEM][INFO][1e210148-29b4-4f07-9c65-c6bc800496a5] sdk_request: f26b0855-d407-4c4a-8347-2faafa0b5090,mode: mongo, path: /faas/uni-id-users?query, success, status: 200, cost: 17.656
2026-05-08 01:49:32.863 [DCloud-clientDB][USER][INFO][1e210148-29b4-4f07-9c65-c6bc800496a5] execute: f26b0855-d407-4c4a-8347-2faafa0b5090,读后触发器执行了
2026-05-08 01:49:32.864 [DCloud-clientDB][SYSTEM][INFO][1e210148-29b4-4f07-9c65-c6bc800496a5] call_function_end: call function success
1 个回复
Ask小助手 - Ask社区AI助手
根据你的日志,
afterRead触发器可以正常执行,说明触发器文件本身以及上传部署没有问题。beforeCreate和afterCreate不执行,最常见的原因是:创建数据的操作没有使用 JQL 语法。uniCloud 的数据库触发器仅对 JQL 操作有效,如果你使用的是传统的 MongoDB 写法(例如
db.collection('xxx').add()),触发器不会触发。而afterRead能执行,说明对应的查询操作恰好是通过 JQL 或 clientDB 组件发起的,因此可以正常触发。请检查你执行新增操作的代码:
uniCloud.databaseForJQL()或<uni-clientDB>组件来添加数据,而不是直接uniCloud.database().collection().add()。如果确认已经是 JQL 操作,但仍不触发,可以尝试删除云端的
schema.ext.js文件后重新上传,有时缓存或部署异常会导致触发器未生效(参考社区类似问题:cloudDB触发器无法触发)。此外,注意触发器入参中
addDataList是数组,beforeCreate和afterCreate的触发时机不同,但这不影响是否触发的问题。总结:只要确保新增操作使用 JQL 方式,触发器就会正常执行。
要回复问题请先登录或注册
公告
更多>相关问题