对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

外部依赖项

外部依赖是一个库,其中包含您自己无法实现或不想实现的代码。例如,您可以使用官方库作为外部服务或者数据结构或算法的自定义实现。

Atlas会自动转换依赖项,并且还支持大多数内置Node.js 模块。

注意

创建您自己的模块

虽然大多数npm模块由第三方编写,但您也可以创建并发布自己的npm模块来容纳特定于您的应用程序的逻辑。您可以将模块提供给 Node.js 社区,也可以保留以供私人使用。 有关更多信息,请查看 npm 的“向注册表贡献包”指南。

To import and use an external dependency, you first need to add the dependency to your application. You can either add packages by name or upload a directory of dependencies.

重要

覆盖现有依赖项

您一次只能使用一种方法来指定应用可以使用的外部包。用于指定依赖项的最新方法是数据源,并且会覆盖之前的规范。

例如,通过用户界面按名称添加的软件包会覆盖之前添加的同一软件包的所有副本,包括上传的依赖项目录中的副本。

可以按名称将 npm 注册表中的软件包添加到相关应用中。可以添加特定版本或使用最新版本。

1
  1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。

  2. 如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。

  3. 在侧边栏中,单击 Streaming Data 标题下的 Triggers。

会显示触发器页面。

2
  1. 选择要添加依赖项的trigger 。

  2. 在 Edit Trigger 页面上, Go Function 部分并单击 Add Dependency。

3
  1. 在Add Dependency模式窗口中,包含以下信息:

    字段
    说明

    定义包名称

    npm 包的名称。

    软件包版本

    可选。 要使用的依赖项的特定版本。 默认, Atlas函数使用可用的最新版本。

  2. 单击Add添加包。

您可以在窗口底部的进度跟踪器中跟踪添加依赖项的状态。进度跟踪器提供一条消息,让您知道这个包是成功还是失败。失败消息包含有关无法添加包的原因的其他信息。

4

成功添加依赖项后,您将在Triggers主页的Dependencies标签页的依赖项列表中看到它。

您可以将压缩的 node_modules 软件包目录上传到应用。压缩的依赖目录不得超过 15MB。

重要

覆盖现有依赖项

导入存档时,所有现有依赖项都将被删除。

1

要上传外部依赖项,首先需要一个本地 node_modules 文件夹,其中包含至少一个 Node.js 包。可以使用以下代码片段在本地安装要上传的依赖项:

npm install <package name>

如果 node_modules 文件夹尚不存在,则此命令会自动创建它。

注意

其他安装方法

您还可以配置 package.json 并运行 npm install 命令来安装 package.json 中列出的所有软件包(及其依赖项)。

要了解有关 npm 和 node_modules 的更多信息,请查阅 npm 文档。

2

现在您已经下载了所有npm模块,您需要将它们包到存档中,以便上传到Atlas。 Atlas支持.tar 、 .tar.gz 、 .tgz和.zip存档格式。

创建包含 node_modules 文件夹的存档:

tar -czf node_modules.tar.gz node_modules/

创建包含依赖项的存档后,您可以使用Atlas用户界面上传依赖项存档。

3
  1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。

  2. 如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。

  3. 在侧边栏中,单击 Streaming Data 标题下的 Triggers。

会显示触发器页面。

4
  1. 选择 Dependencies 标签页。

  2. 单击 Upload Folder(连接)。

  3. 在模式窗口中,单击Upload Folder ,然后选择您刚刚创建的node_modules.tar.gz存档。

  4. 单击 Add。Atlas 会上传存档文件,这可能需要几分钟时间,具体取决于您的互联网连接速度和依赖项存档的大小。

  5. Atlas会显示一个横幅,指示操作成功或失败。 如果成功, Dependencies标签页将显示您在依赖项存档中包含的依赖项列表。

    • 如果已启用草稿,还必须单击Review & Deploy来应用这些更改。

    • 如果已禁用草稿,则更改将在5到60秒内生效,具体取决于依赖项存档的大小。

可以导入已添加到应用中的内置模块和外部软件包,然后在函数中使用它们。要导入一个软件包,请使用函数体中的包名称来调用 require()。

重要

从哪里导入模块?

Node.js 项目通常会在每个文件的全局范围内放置require()调用,但Atlas不支持此模式。 必须在函数作用域内调用require() 。

exports = () => {
const R = require("ramda");
return R.map(x => x*2, [1,2,3]);
}
exports = function(arg){
const cloneDeep = require("lodash/cloneDeep");
var original = { name: "Deep" };
var copy = cloneDeep(original);
copy.name = "John";
console.log(`original: ${original.name}`);
console.log(`copy: ${copy.name}`);
return (original != copy);
};

以下示例使用 lodash 依赖项创建Atlas Triggers函数。

1
  1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。

  2. 如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。

  3. 在侧边栏中,单击 Streaming Data 标题下的 Triggers。

会显示触发器页面。

2
  1. 选择要添加依赖项的trigger 。

  2. 在 Edit Trigger 页面上, Go Function 部分并单击 Add Dependency。

3

a.在 Add Dependency 模式窗口的Define a Package Name字段中,输入 lodash。

  1. 单击Add添加包。
4

成功添加依赖项后,您将在Triggers主页的Dependencies标签页的依赖项列表中看到它。

5

在 Triggers 页面上,单击 Add Trigger。

在 Trigger Details 窗格中,添加评估值:

设置
值

触发器类型

Database

防范

Collection

集群名称

您的 Atlas 集群的名称。

Database Name

要对其执行触发的数据库的名称。

集合名称

要针对其执行触发的集合的名称。

操作类型

Insert Document, Update Document , Delete Document , Replace Document

完整文档

残疾人

文档前图像

残疾人

6

在 Function 窗格中,粘贴以下代码:

exports = async function(changeEvent) {
const _ = require('lodash');
const temp = ['a', 'b', 'c'];
const result = _.filter(temp, (val) => val === 'a');
console.log("result: ", result);
return result;
};

单击 Run 执行该函数。在时间戳和执行时间之后,输出为:

> logs:
result: a
> result:
[
"a"
]
> result (JavaScript):
EJSON.parse('["a"]')