MongoDB atlas触发器获取错误:TypeError:无法访问未定义的成员“db”

htrmnn0y  于 2023-01-20  发布在  Go
关注(0)|答案(4)|浏览(126)

我是一个新手尝试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:**

添加一个触发器函数文本的屏幕截图,其中包含示例注解代码。请参阅从底部开始的第二行,其中显示了我一直在使用的语法。

提前致谢!

ckx4rj1h

ckx4rj1h1#

我链接了一个页面示例,您应该可以在其中找到链接的集群(侧边导航中的“Linked Data Sources”)。

7nbnzgx9

7nbnzgx92#

在我的例子中,我必须使用实际的集群名,而不是mongodb-atlas

rekjcdws

rekjcdws3#

首先,确定要使用的触发器。参考docs: mongodb trigger-types
然后,您必须链接数据源(单击按钮)x1c 0d1x
之后,您必须使用集群名称,而不是Scheduled Trigger

注解中所说的“mongodb-atlas

ne5o7dgx

ne5o7dgx4#

在运行触发器之前,检查是否在函数.

上方的表单中链接了群集

  • (我花了几个小时来解决这个问题,所以请原谅红色和粗体。)*

相关问题