零基础手把手教你用Node搭建服务器并连接MongoDB数据库

Posted 安之ccy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了零基础手把手教你用Node搭建服务器并连接MongoDB数据库相关的知识,希望对你有一定的参考价值。

本文原创为CSDN博主:安之ccy,博客首页地址:https://blog.csdn.net/qq_43523725
转载请注明出处,谢谢支持和鼓励




正文bgm起~

用Node搭建服务器

创建MongoDB数据库
       创建项目
       配置项目
              新建集群
              创建一个新的数据库用户
              在允许访问列表中添加IP地址
              数据库连接自己的集群

Node连接MongoDB数据库

用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数据库的主要内容,如果未能解决你的问题,请参考以下文章

手把手教你用express搭建个人博客

[零基础十分钟]教你用Node.js写生成器:你只需要5步

零基础秒懂:手把手教你搭建一套微服务框架!

手把手教你用Mysql-Cluster-7.5搭建数据库集群

一学就会,手把手教你用Go语言调用智能合约

还不会搭建个人博客?手把手教你用Wordpress搭建只属于你的世界~(肝帝写近万字多图详解,全网最详细,建议收藏! ❤️)