MongoDB Atlas Trigger无法读取Config集合数据问题求助
问题根因
MongoDB Realm 函数的所有数据库操作均为异步逻辑,返回 Promise 实例,当前写法没有等待异步查询完成就直接序列化打印,拿到的是未完成的 Promise 对象,JSON 序列化后自然就是{}。
修复步骤
- 修正异步调用写法,将函数声明为
async,并在数据库查询前添加await等待操作完成:
exports = async function(changeEvent) { const mongodb = context.services.get("Cluster0"); const db = mongodb.db("TestDB"); const collection = db.collection("Config"); // 等待异步查询完成,拿到实际的文档数组 const config_docs = await collection.find().toArray(); console.log(JSON.stringify(config_docs)); return config_docs; }
- 检查集合访问权限
进入Triggers_RealmApp的控制台规则配置页,确认TestDB.Config集合的角色权限配置中,触发器关联的角色拥有find读取权限,未配置权限时默认会禁止数据访问,也会返回空结果。
异常现象解释
- 修改数据源名称报错:获取服务实例的操作为同步逻辑,找不到对应服务会立刻抛出错误,不需要等待异步执行
- 修改为不存在的库/集合仍输出
{}:没有等待异步操作返回结果,打印的始终是未决议的Promise实例,序列化后统一为空对象
内容的提问来源于stack exchange,提问作者Daniel Warfield
相关产品推荐
相关产品推荐

