具有 DigitalOcean 功能的无服务器 Node-Mongo API
大家好, 我们将讨论新推出的 DigitalOcean Functions - 一种实现无服务器的方式,并将创建一个 node.js 应用程序,该应用程序可以连接和存储数据到 MongoDB。使用 DigitalOcean 创建无服务器函数非常简单。 函数是按需运行的代码块,无需管理任何基础设施。在您的本地机器上开发,从命令行(使用 doctl)测试您的代码,然后部署到 App Platform
大家好,
我们将讨论新推出的 DigitalOcean Functions - 一种实现无服务器的方式,并将创建一个 node.js 应用程序,该应用程序可以连接和存储数据到 MongoDB。使用 DigitalOcean 创建无服务器函数非常简单。
函数是按需运行的代码块,无需管理任何基础设施。在您的本地机器上开发,从命令行(使用 doctl)测试您的代码,然后部署到 App Platform — 不需要服务器。
先决条件:
-
DigitalOcean 帐户-注册时免费 $100
-
安装doctl cli
-
MongoDB 凭证(URI)
第一步:初始化
在系统中设置并安装 doctl 后。通过运行以下命令检查一切是否正常:
doctl serverless status
进入全屏模式 退出全屏模式
上面的命令应该返回如下内容:
Connected to function namespace 'fn-feb132ee-706a-4f13-9c81-f24a3330260a' on API host 'https://faas-nyc1-78edc.doserverless.co'
现在通过运行初始化项目(node-mongo-serverless 是我们这里的项目名称,您可以选择任何更喜欢的名称):
doctl serverless init --language js node-mongo-serverless
进入全屏模式 退出全屏模式
将使用以下目录结构创建项目文件夹:
node-mongo-serverless/
├── packages
│ └── sample
│ └── hello
│ └── hello.js
└── project.yml
进入全屏模式 退出全屏模式
现在我们将重命名文件并在根目录中创建一个 .env 文件,这样新的结构将如下所示:
node-mongo-serverless/
├── packages
│ └── mongodb
│ └── postData
│ └── index.js
└── project.yml
└── .env
进入全屏模式 退出全屏模式
第二步:配置
现在我们需要相应地修改project.yml
文件。它将如下所示。我们需要修改包名和动作名。
targetNamespace: ''
parameters: {}
packages:
- name: mongodb
parameters: {}
annotations: {}
actions:
- name: postData
binary: false
main: ''
runtime: 'nodejs:default'
web: true
parameters: {}
environment: {}
annotations: {}
limits: {}
environment:
DATABASE_URL: ${MONGO_URI}
进入全屏模式 退出全屏模式
现在我们将使用 MongoDB URI 打开并修改根文件夹中的 .env 文件。
.env 文件将如下所示。 (用您自己的 MongoDB URI 替换该值。)
MONGO_URI='mongodb://myDBReader:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin'
进入全屏模式 退出全屏模式
现在我们将一一运行以下命令:
cd node-mongo-serverless/packages/mongodb/postData
npm init -y
npm install --package-lock-only mongodb
进入全屏模式 退出全屏模式
以上命令会在node-mongo-serverless/packages/mongodb/postData
目录下创建packages.json
文件并添加mongodb包。
第三步:给函数添加代码
我们现在可以在我们已经拥有的 index.js 文件中创建我们的 main 函数。
先把 index.js 文件的所有内容去掉,替换成下面的代码。
const MongoClient = require('mongodb').MongoClient;
async function main() {
const uri = process.env['DATABASE_URL'];
let client = new MongoClient(uri);
let data = { "name":"Arpan" };
try {
await client.connect();
await client.db("namedb").collection("names").insertOne(data);
console.log(`added ${data} to database.`);
return { ok: true };
} catch (e) {
console.error(e);
return {
"body": { "error": "There was a problem adding the data to the database." },
"statusCode": 400
};
} finally {
await client.close();
}
}
module.exports.main = main;
进入全屏模式 退出全屏模式
该函数会将数据添加到 MongoDB 数据库。
而已。我们现在都完成了。我们现在可以继续部署我们的功能。
第四步:部署和测试函数
我们导航到 project.yml 所在项目的根目录并运行以下命令以连接到 Serverless 命名空间。
doctl serverless connect
进入全屏模式 退出全屏模式
一旦你得到像“连接到函数命名空间”这样的肯定响应,你可以运行以下命令来部署函数。
doctl serverless deploy .
进入全屏模式 退出全屏模式
对于上述命令,您必须在项目的根目录中。您应该会看到有关部署的成功消息。
运行以下命令获取函数 API 的 URL,您可以在其中存储数据。
doctl serverless functions get mongodb/postData --url
进入全屏模式 退出全屏模式
您可以将返回的 URL 复制并粘贴到本地浏览器或邮递员或任何其他工具/包中。如果数据正确插入 MongoDB,您将收到来自 index.js 文件的响应。
希望你喜欢这篇文章。如有任何疑问,请随时在评论中提问。
更多推荐
所有评论(0)