我是一个新手尝试MongoDB-atlas免费层。我有一个集群名为-"mongoCluster"。在它下面,我有一个数据库-"testdb",在它下面,有一个集合-"testcollection"。这个集合有文档。从我的Java应用程序插入和读取工作正常。
现在我尝试在MongoDB atlas中创建一个新的调度触发器。但是当我运行下面两行时,我得到了下面的错误。对于任何其他mongo查询,如删除、更新和插入,也是如此。
- 代码:**
exports = function() {
const collection=context.services.get("mongoCluster").db("testdb").collection("testcollection");
collection.insertOne({"a": "b"});
// const doc = collection.findOne();
};
- 错误:**
> ran on Mon Nov 16 2020 18:52:52 GMT-0800 (Pacific Standard Time)
> took 272.591178ms
> error:
TypeError: Cannot access member 'db' of undefined
> trace:
TypeError: Cannot access member 'db' of undefined
at exports (function.js:24:24)
at apply (<native code>)
at function_wrapper.js:3:1
at <anonymous>:8:1
查看错误,要么是服务名不正确("未定义错误"),要么是我缺少对服务/数据库/集合的某些权限("匿名:8:1错误")。
我在MongoDB文档的某个地方读到,服务名=集群名。有没有办法看到我的服务名是什么?我也试过用小写的服务名,但是没有成功。也试过用完全限定的服务名-"www.example.com",同样的错误。mongocluster.qeat9.mongodb.net", same error.
或者我漏掉了什么?谁能帮帮忙?
- 编辑1:**
添加一个触发器函数文本的屏幕截图,其中包含示例注解代码。请参阅从底部开始的第二行,其中显示了我一直在使用的语法。
提前致谢!
4条答案
按热度按时间ckx4rj1h1#
我链接了一个页面示例,您应该可以在其中找到链接的集群(侧边导航中的“Linked Data Sources”)。
7nbnzgx92#
在我的例子中,我必须使用实际的集群名,而不是
mongodb-atlas
rekjcdws3#
首先,确定要使用的触发器。参考docs: mongodb trigger-types
然后,您必须链接数据源(单击按钮)x1c 0d1x
之后,您必须使用集群名称,而不是Scheduled Trigger
注解中所说的“mongodb-atlas
ne5o7dgx4#
在运行触发器之前,检查是否在函数.
上方的表单中链接了群集