零基础手把手教你用Node搭建服务器并连接MongoDB数据库
Posted 安之ccy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了零基础手把手教你用Node搭建服务器并连接MongoDB数据库相关的知识,希望对你有一定的参考价值。
本文原创为CSDN博主:安之ccy,博客首页地址:https://blog.csdn.net/qq_43523725
转载请注明出处,谢谢支持和鼓励
正文bgm起~
创建MongoDB数据库
创建项目
配置项目
新建集群
创建一个新的数据库用户
在允许访问列表中添加IP地址
数据库连接自己的集群
用Node搭建服务器
1.新建一个文件夹,放置项目,打开终端,进入这个目录,安装相关依赖:npm init
我是一路回车的,入口文件默认为index.js,
init结束后会自动生成一个package.json文件,里面是刚刚(默认)设置的信息
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \\"Error: no test specified\\" && exit 1"
},
"author": "",
"license": "ISC"
}
2.安装express模块:
npm install express
此时的package.json文件是这样的:
3.创建入口文件,命名为index.js
创建新文件方式之一:
4.在index.js中搭建服务器:
// 1.引入express
const express = require("express");
// 2.创建app对象
const app = express();
// 3.设置端口
const port = process.env.PORT || 5000;
// 4.设置监听
app.listen(port, ()=>{
console.log(`server running on port ${port}`);
})
// 5.设置路由
app.get('/',(req,res)=>{
res.send("hello world");
})
5.运行项目:
node index.js
运行成功时,监听开启,并在终端输出如下信息:server running on port 5000
6.在浏览器可以看到"hello world"字样(在步骤——”设置路由“中定义的):
但是这样启动,每次代码发生改动保存后,需要手动重启一下项目,比较麻烦,可以使用nodemon自动保存重启项目
7.设置自动刷新重启项目:
安装nodemon:
npm install nodemon -g
使用nodemon启动项目:
nodemon index.js // 如果项目内容发生改变,会自动刷新并重启项目
项目运行成功之后,会在终端看到这样的信息:
8.设置启动/自动保存重启的快捷命令:
在package.json文件中的scripts字段下:
- “start”:“node index.js” —— 在终端输入:npm run start即可启动项目
- “server”:“nodemon index.js” —— 在终端输入:npm run server即可通过nodemon启动项目
"scripts": {
"start": "node index.js",
"server":"nodemon index.js"
}
至此,服务器就搭建好啦( •̀ ω •́ )✧~
此处记录一个小坑,有的时候修改的代码不能及时更新,及时重启服务器也不行,需要把终端整个关掉再运行一次。emm,心肌梗塞的感觉。如果实在检查不出错误,不妨试一试,两试两灵,因此记录一下
然后我们来配置mongo数据库~
创建MongoDB数据库
创建项目
1.在MongoDB官网注册一个账号,然后新建一个项目:
2.命名项目
给项目起个名字,这里起名:restfule-api-test
3.由于是自己测试搭建,因此User只设置成自己,没有添加其他用户,然后点击”创建项目“
4.这时会有一个验证信息,通过你注册的邮箱账号发给你,点击一下里面的"sign in"按钮,然后重新登录一下官网账号,项目就创建成功了
配置项目
左下角有个"get start"向导,可以根据"get start"一步步操作(没有也没关系,只要主要的步骤不落下就可以搭建成功)新建集群
1.先点击"创建集群"按钮
2.选择免费的服务
3.页面会默认勾选免费(FREE)的服务,确认一下左下角的FREE标记即可,点击创建集群
等待几分钟,这个过程稍慢些
新的集群就创建好啦
创建一个新的数据库用户
1.左边侧边栏选择"Database Access"
2.选择添加新的数据库用户
3.默认是通过用户名密码来认证的,我们添加用户名和密码即可,密码不能过于简单
4.默认用户权限是可读可写的,可以修改
5.点击添加用户
6.添加成功
在允许访问列表中添加IP地址
1.在侧边栏选择"Network Access",点击添加IP地址
2.由于是自己测试,此处选择允许所有IP访问(可以根据需要,限制某个网段才能访问)
此时状态为pending,需要通过注册的邮箱再次验证
认证之后,状态就变成了Active
数据库连接自己的集群
左侧侧边栏选择"Clusters",会显示一个"CONNECT"按钮,点击连接
可以选择用于连接我们的应用:
搭建完成后,会给我们一个连接服务器的地址,node通过这个地址与刚刚创建的mongo数据库连接
注:如果之后用不到这个集群,要删除,可以通过"Clusters"的"Terminate"删除集群
Node连接MongoDB数据库
1.安装mongoose
npm install mongoose --save
2.为了能够使用post功能,还需要安装body-parser:
npm install body-parser
3.新建文件夹config,该文件夹下新建文件key.js用来存储mongodb的地址
module.exports = {
mongoURI:"mongodb官网给的地址,记得<password>需要替换成刚刚设置的密码"
}
4.在index.js中引入mongoose和body-parser,并连接mongoDB数据库:
// 引入mongoose
const mongoose = require("mongoose");
// 引入刚刚创建的数据库
const db = require("./config/keys").mongoURI;
// 引入body-parser,用于执行post操作
const bodyParser = require("body-parser");
// 连接mongodb
mongoose
.connect(db,{ useNewUrlParser: true, useUnifiedTopology: true})
.then(()=>{console.log("mongodb connected")})
.catch(err => console.log(err))
5.测试与mongodb的连接
运行项目,如果打印出"mongodb connected",代表连接成功:
6.测试post操作,创建自定义模块users
新建一个文件夹,名为module,该文件夹下建一个文件,命名users.js,此为自定义的模块,存放要存储的数据格式
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
// 创建UserSchema,包含姓名、邮箱、密码、头像、创建日期
// 其中,姓名、邮箱、密码是必需的
const UserSchema = new Schema({
name:{
type:String,
require:true
},
email:{
type:String,
require:true
},
password:{
type:String,
require:true
},
profilePicture:{
type:String
},
Date:{
type:Date,
default:Date.now()
}
})
// 将UserSchema开放出去,别名users
module.exports = User = mongoose.model("users",UserSchema)
7.设置路由,执行post操作
新建文件夹routers,再建一个子文件夹api,子文件夹api下创建User.js,是users模块的路由文件
const express = require("express");
const router = express.Router();
// 测试路由功能
router.get("/test",(req,res)=>{
res.json({msg:"route works"})
})
// 测试连接MongoDB的路由并post数据到数据库
router.post('/register', (req, res) => {
// console.log(req.body);
User.findOne({ email: req.body.email })
.then((user) => {
if (user) {
return res.status(400).json({ email: "邮箱已被注册!" })
} else {
const newUser = new User({
name: req.body.name,
email: req.body.email,
password: req.body.password
})
// 密码加密
bcrypt.genSalt(10, function (err, salt) {
bcrypt.hash(newUser.password, salt, (err, hash) => {
// Store hash in your password DB.
if (err) throw err;
newUser.password = hash;
newUser.save()
.then(user => { res.json(user), console.log(newUser) })
.catch(err => console.log(err))
});
});
}
})
})
module.exports = router;
8.使用模块,测试post操作下与mongodb的连接
在index.js文件中:
//引入users
const users=require('./routers/api/User');
// 使用bodyParser中间件,对应postman中Body的x-www-form-urlencoded格式
// 这两行代码要写在app.use("/api/users",users)前面,否则无法识别到从postman输入的数据,只能得到undefined
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());
// 使用中间件
app.use("/api/users",users);
9.在postman中测试
通过postman发送post请求:
查看数据库里的数据,有刚刚post上去的数据,代表post成功啦
9.设置路由,执行get操作
router.get('/getUserMsg',(req,res)=>{
User.findOne({name:"ccy"})
.then((user) => {res.json(user)})
})
在postman中测试,获得数据库中的信息:
与mongodb的基本连接就是这样啦~
欢迎大佬们点赞、评论、收藏、分享,谢谢支持和指点~
以上是关于零基础手把手教你用Node搭建服务器并连接MongoDB数据库的主要内容,如果未能解决你的问题,请参考以下文章
手把手教你用Mysql-Cluster-7.5搭建数据库集群
还不会搭建个人博客?手把手教你用Wordpress搭建只属于你的世界~(肝帝写近万字多图详解,全网最详细,建议收藏! ❤️)