Skip to content

1.先创建 MongoDB Altas 集群(免费的就可以),过程中会创建数据库用户 2.回到vercel添加集成 将刚刚创建好的MongDB集成添加到Vercely用户账户(在企业设置中,你可以把它添加到你的Vercel团队中。) 导航到https://vercel.com/integrations/mongodbatlas ,点击顶部的 "添加集成 "按钮。你会看到一个包含下拉菜单的模式,你想使用的账户应该出现在那里,如下图步骤1。

步骤1.添加MongoDB Atlas集成到Vercel

接下来,你可以选择将集成添加到所有项目或特定项目中。为了这个演示,让我们选择 "添加到所有(all) "并点击继续,一路默认即可。管理时需要登录 mongodb Altas 没有账户的需要先注册。

将Vercel项目与MongoDB Atlas集群相关联 下一步是在MongoDB Atlas集群和Vercel项目之间创建桥梁。确保你在Vercel方面选择了正确的项目!

一旦这样做了,Vercel项目将自动访问我们需要的环境变量(MONGODB_URL),以便轻松地连接到数据存储。

回到Vercel中,你会在首页集成标签中看到MongoDB Atlas集成

在这里,你可以对集成的Vercel端进行修改(包括卸载它,如果你愿意,选择管理->卸载)。

接下来,我们验证Vercel项目是否已经接受了新的环境变量,该变量指的是MongoDB Atlas的安装。打开使用的Vercel项目,并点击设置。在设置中,点击左侧菜单中的 "环境变量"。然后你应该看到一个MONGODB_URI 变量列在那里。

如果你点击变量中的眼睛图标,你可以看到值,它应该指向你的MongoDB Atlas集群。这验证了环境变量MONGODB_URI在部署时对应用程序是可用的。

如何使用它? 可以在业务中,引用环境变量 const uri = process.env["MONGODB_URI"];

需要提示一点,在本地和线上环境切换,开发测试还是需要在本地,所以需要在本地开展一个测试环境判断。以便于开发

require('dotenv').config();

// 1 cnpm install mongodb --save

//2、引入mongodb
const {
    MongoClient
} = require('mongodb');

let url = process.env["MONGODB_URI"];

//3、定义数据库连接的地址
if (process.env['NODE_ENV'] === 'development') {
    url = '****' //线上或本地 测试用地址
}

if (!url) {
    throw new Error('Please set Mongo URI')
}
const client = new MongoClient(url, {
    useUnifiedTopology: true
});
......

注意这个文件的第一行是调用导入'dotenv/config' 。这个导入导致dotenv库自我启动。dotenv的目的是为应用程序从配置文件中加载环境变量(以一种与操作系统无关的方式)。更多相关信息请点击https://www.npmjs.com/package/dotenv。 对于我们的应用程序,我们想在开发期间将该变量设置为本地URI,并在生产期间将其设置为远程MongoDB Atlas URL。我们可以通过提供一个.env文件来做到这一点,dotenv在本地开发时可以找到这个文件,但在生产时则不能。为了达到这个目的,我们不将该文件纳入版本控制--我们将其添加到.gitignore。

添加到.env和.gitignore中


// .env
MONGODB_URI="mongodb://localhost:27017

// .gitignore
.env
.env.*

vercel中环境变量的使用 https://vercel.com/docs/concepts/projects/environment-variables

要在vercel api serverless function 里面使用第三方的包,需要查看高级用法的文档,(普通里没说)但是没有找到我报错的解决方法

javascript
const {
    MongoClient
} = require('mongodb');

https://vercel.com/docs/runtimes#advanced-usage/advanced-node-js-usage

hexo 中使用 api 模式 链接数据库,第三方报错解决方法: 在 api 目录 创建 package.json ,将接口需要的第三方模块依赖增加进去,编译的时候就会自动安装。

部署在线上,直接访问结果:

成功!

Released under the MIT License.