【Part1】用JS写一个Blog (node + vue + mongoDB)
上一节前后端项目分别初始化完成,这一小节我就从后端项目开始写。实现mongoDB
数据库的连接。
整理后端目录
下面是通过express-generate
生成的项目的目录
bin/www
是项目的启动文件,启动项目除了上次说的npm start
,还可以再命令后执行 node bin/www
,其实这两个命令是一样的,只不过在package.json
文件中两者建立了链接,如下图
node_modules
不用多说,项目的依赖都安装于此public
是放置一些公共资源的文件夹,我以后也不会用到它,所以把他给删掉了router
下的.js文件就是我们写API的地方了,为了更直观,我把router
名字改为api
,把里面的文件名字分别改为post.js
和admin.js
.(我把api分成两个文件,一个是与文章相关的,另一个是与管理员相关的)views
是页面的模板,因为我们后端只提供数据接口,所以用不到页面文件,我把他给删掉了app.js
是整个项目的入口文件,相当于后端项目的大脑,它里面的文件是按顺序执行package.json
是关于我们这个项目用到的依赖。
需要说明的是,需要在根目录下创建一个models
的文件夹用来初始化mongodb
数据库等一些操作的。
下面就是整理好的后端目录
安装mongoDB数据库
安装方法在这里不多说,网上资源一大堆,可以去官网看官方文档,我是利用Docker
安装的,方便本地调试。
安装完成后不要忘记启动mongodb
安装mongoose
mongoose
是mongodb
的一个对象模型工具,有了它,可以很方便的操作mongodb
数据库,还不是很了解mongoose
的小伙伴自行google,资料有很多。
命令行输入 npm install mongoose --save
安装完成后,首先要定义模型
在models
文件夹下新建一个post.js
定义文章的模型,填入内容
let mongoose = require('mongoose') //引入mogoose
//在 Mongoose 中,所有东西都从一个 Schema 开始。每一个 schema 都映射到一个 MongoDb 的集合,并定义了该集合中的文档的形式。
let postSchema = new mongoose.Schema({
title: String, //规定文章的标题是字符串类型
content: String //规定文章的内容是字符串类型
})
let postModel = mongoose.model('posts', postSchema) //定义模型
module.exports = postModel //通过commonJS模块语法导出
在models
文件夹下新建一个admin.js
定义管理员模型,填入内容
let mongoose = require('mongoose')
let adminSchema = new mongoose.Schema({
name: String, //用户名
pass: String //密码
})
let adminModel = mongoose.model('admin', adminSchema)
module.exports = adminModel
继续在models
文件夹下新建一个init.js
用于连接mongoDB数据库,填入内容
let mongoose = require('mongoose')
mongoose.connect('mongodb://localhost:27017/blog') // 数据库的端口号根据需求进行调整,一般直接安装mongodb并启动后,端口号默认是27017,如果通过docker安装,端口号会是其他的。blog是我们博客的数据库的名字,如果没有名字为blog的数据库,会自动添加。
///打印连接状态的日志,可自行选择写与不写
mongoose.connection.on('connected', (req, res) => {
console.log('MongoDB connected success')
})
mongoose.connection.on('err', (req, res) => {
console.log('MongoDB connected fail')
})
mongoose.connection.on('disconnected', (req, res) => {
console.log('MongoDB connected disconnected')
})
下面就重启我们后端项目,如果上次开启的进程还没关掉,命令行control + c
关闭进程,输入npm start
重启项目。
fk,报错。。
不能找到index这个文件,原来是我们刚刚改了index.js
和user.js
文件的名字,因为这两个文件在app.js
中被引用,所以找到app.js
,
把
和
修改为
修改完成后,执行npm start
项目是启动成功了,但是结果没有出现打印的日志
说明我们的数据库没有连接,找了很久,原来是因为我们的init.js
文件没有在app.js
中引用,那肯定是没有执行init.js
文件,因为前面说了整个项目的主入口文件是app.js
,所以我们在app.js
中引用它
现在重启项目,看看是不是有了连接成功的日志
数据库已连接成功,那么下一步写接口!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。