Nodejs连接到Mongodb

后端

npm init 初始化生成 package.json 配置文件

code . 在 IDE 打开 ctrl + ~ 快捷键也可以打开终端

npm install express 安装express框架

npm install nodemon -g 监听代码文件的变动,当代码改变之后,自动重启。

在package.json中配置启动命令

1
2
3
4
"scripts": {
"start": "node server.js",
"server": "nodemon server.js"
}

引入 , 这里还是用的 CommonJS 语法

1
2
const express = require("express");
const app = express();

配置路由和端口号并监听

1
2
3
4
5
6
7
8
app.get("/",(req,res) => {
res.send("Hello World!");
})

const port = process.env.PORT || 5005;
app.listen(port,() => {
console.log(`Server running on port ${port}`);
})

npm run server 以nodemon模式运行

数据库

使用MongoDB在线数据库,太慢了太慢了…IP白名单设为0.0.0.0

选择驱动连接

npm install mongoose Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具

引入

1
2
3
const mongoose = require("mongoose");

const db = require("./config/keys").mongoURI;

配置,替换一下密码和数据库名

1
2
3
module.exports = {
mongoURI: "mongodb+srv://root:<password>@tradesys-ofejr.mongodb.net/<dbname>?retryWrites=true&w=majority"
}

连不上啊..连不上

算了,用本地的把


sudo apt-get install mongodb 居然有安装包?试试能不能用

sudo systemctl start mongod 报错找不到

找了一下初始安装位置

Created symlink /etc/systemd/system/multi-user.target.wants/mongodb.service → /lib/systemd/system/mongodb.service.

sudo systemctl start mongodb.service 不再报错, 停止stop, 重启restart

查看 /etc/mongodb.conf 的默认配置

默认无需验证 auth = true

进入mongo , 操作类似于Mysql

创建数据库和管理员

1
2
3
4
5
6
7
8
> use tradesys
> db.createUser({
user:'wallen',
pwd:'wallen',
roles:[
{role:'readWrite',db:'admin'}
]
})

重新配置连接文件keys.js

1
2
3
4
5
6
7
8
9
10
11
12
13
var options = {
db_user: "wallen",//账户名
db_pwd: "wallen",
db_host: "127.0.0.1",
db_port: 27017,
db_name: "tradesys",//数据库名称
useNewUrlParser: true
};


module.exports = {
mongoURI: "mongodb://" + options.db_user + ":" + options.db_pwd + "@" + options.db_host + ":" + options.db_port + "/" + options.db_name,
}

连接成功