本篇介绍如何用vapor连接另一种数据库Mongodb
-
安装MongoDB
首先付上官网的安装教程:安装mongodb,这个是社区版,由于企业版是收费的,就先来个社区版以供测试使用。
安装步骤:
1、在包管理系统中插入公钥:
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
2、为MongoDB创建list file
- Ubuntu 14.04
$ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
- Ubuntu 16.04
$ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
3、重载本地包数据库
$ sudo apt-get update
4、安装MongoDB包
$ sudo apt-get install -y mongodb-org
如果要安装特定版本,可以替换下面命令的版本号:
sudo apt-get install -y mongodb-org=3.6.2 mongodb-org-server=3.6.2 mongodb-org-shell=3.6.2 mongodb-org-mongos=3.6.2 mongodb-org-tools=3.6.2
这样MongoDB就安装好了,为了测试是否安装成功,执行以下操作:
1、启动MongoDB:
$ sudo service mongod start
2、验证是否成功启动
查看日志文件: /var/log/mongodb/mongod.log
[initandlisten] waiting for connections on port 27017
3、终止MongoDB服务:
$ sudo service mongod stop
4、重启MongoDB:
$ sudo service mongod restart
5、开始使用MongoDB:
$ mongo --host 127.0.0.1:27017
卸载MongoDB:
1、停止服务
$ sudo service mongod stop
2、移除包
$ sudo service mongod stop
3、删除数据文件夹
$ sudo rm -r /var/log/mongodb
$ sudo rm -r /var/lib/mongodb
到这里我们的MongoDB已经安装完成
如果要外网访问,修改配置文件vim /etc/mongod.conf, 将绑定的ip改为0.0.0.0
另外如果使用的是云服务器需要修改安全组策略,添加支持对27017端口的授权
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
现在开始配置mogodb:
使用
$ mongo --host 127.0.0.1:27017
或者
$ mongo
来进入数据库,看到以下内容表示进入了mongo的地盘
MongoDB shell version v3.6.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.2
下面创建一个新的用户
- 首先,切换到admin库, 因为在admin库里才能操作用户
> use admin
switched to db admin
- 接着创建一个新用户
> db.createUser( { user: "admin", customData: {description: "superuser"}, pwd: "adminpassword", roles: [ { role: "root", db: "admin" } ] } )
Successfully added user: {
"user" : "admin",
"customData" : {
"description" : "superuser"
},
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
- 看看用户是否创建成功
> show users
{
"_id" : "admin.admin",
"user" : "admin",
"db" : "admin",
"customData" : {
"description" : "superuser"
},
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
- 退出mongo
> exit
- 重启mongo
$ sudo service mongod restart
现在就可以连接远程服务器了,可以测试一下:
$ mongo -u admin -p adminpassword 127.0.0.1/admin
如果是远程连接,只要把127.0.0.1换成主机的ip地址即可
配置Vapor项目
接下来开始配置我们的项目,步骤类似Vapor奇幻之旅(06 PostgreSQL)
- 首先添加# mongo-provider
在Package.swift中添加
swift3:
.Package(url: "https://github.com/vapor/mongo-provider.git", majorVersion: 2)
swift4:
.package(url: "https://github.com/vapor/mongo-provider.git", .upToNextMajor(from: "2.0.0"))
在Config+Setup.swift中添加Provider支持
import FluentProvider
import MongoProvider
extension Config {
...
/// Configure providers
private func setupProviders() throws {
try addProvider(FluentProvider.Provider.self)
try addProvider(MongoProvider.Provider.self)
}
...
}
- 修改驱动:
在项目Config/fluent.json中修改driver属性(默认是memory):
"driver": "postgresql"
- 项目中新建文件Config/secrets/mongo.json
Config/
- mongo.json
secrets/
- mongo.json
内容为
{
"url": "mongodb://<db-user>:<db-password>@<host>:<port>/<database>"
}
根据上面服务端的配置,可以写成:
{
"url": "mongodb://admin: adminpassword@xxx.xxx.xxx.xxx:27017/admin"
}
同样也可以在代码中连接数据库:
import Vapor
import MongoProvider
let drop = Droplet()
let mongo = try MongoProvider.Provider(database: ..., user: ..., password: ...)
drop.addProvider(mongo)
- 最后运行项目,测试我们的插入和查询操作:
表示已经成功连接服务器,并可以进行数据操作。
本篇介绍了怎么在ubuntu系统上安装和配置mongodb, 如何在服务器的mongodb上创建新的用户,并通过mongo-provider连接服务器上的数据库。
由于mongodb的Mac版对APFS支持并不好,我并没有安装在我的Mac上,等待后续版本更新后我会进行相应的补充。
关于Vapor其他知识,可以参考以下文章:
Vapor奇幻之旅(01开始)
Vapor奇幻之旅(02部署)
Vapor奇幻之旅(03上手)
Vapor奇幻之旅(04Routing)
Vapor奇幻之旅(05 Fluent)
Vapor奇幻之旅(06 PostgreSQL)
Vapor奇幻之旅(07 连接服务端PostgreSQL)
Vapor奇幻之旅(08 连接服务端MongoDB)
Vapor奇幻之旅(09 连接MySQL)
希望你对我的教程能够喜欢,你们的赞是我持续的动力,欢迎加入QQ群参与互动:431296189