【Part1】用JS写一个Blog (node + vue + mongoDB)

上一节前后端项目分别初始化完成,这一小节我就从后端项目开始写。实现mongoDB数据库的连接。

整理后端目录

下面是通过express-generate生成的项目的目录

clipboard.png

bin/www是项目的启动文件,启动项目除了上次说的npm start,还可以再命令后执行 node bin/www,其实这两个命令是一样的,只不过在package.json文件中两者建立了链接,如下图
clipboard.png

node_modules不用多说,项目的依赖都安装于此
public是放置一些公共资源的文件夹,我以后也不会用到它,所以把他给删掉了
router下的.js文件就是我们写API的地方了,为了更直观,我把router名字改为api,把里面的文件名字分别改为post.jsadmin.js.(我把api分成两个文件,一个是与文章相关的,另一个是与管理员相关的)
views是页面的模板,因为我们后端只提供数据接口,所以用不到页面文件,我把他给删掉了
app.js是整个项目的入口文件,相当于后端项目的大脑,它里面的文件是按顺序执行
package.json是关于我们这个项目用到的依赖。
需要说明的是,需要在根目录下创建一个models的文件夹用来初始化mongodb数据库等一些操作的。
下面就是整理好的后端目录

clipboard.png

安装mongoDB数据库

安装方法在这里不多说,网上资源一大堆,可以去官网看官方文档,我是利用Docker安装的,方便本地调试。
安装完成后不要忘记启动mongodb

安装mongoose

mongoosemongodb的一个对象模型工具,有了它,可以很方便的操作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,报错。。

clipboard.png

不能找到index这个文件,原来是我们刚刚改了index.jsuser.js文件的名字,因为这两个文件在app.js中被引用,所以找到app.js,

clipboard.png

clipboard.png

修改为

clipboard.png

clipboard.png

修改完成后,执行npm start
项目是启动成功了,但是结果没有出现打印的日志

clipboard.png

说明我们的数据库没有连接,找了很久,原来是因为我们的init.js文件没有在app.js中引用,那肯定是没有执行init.js文件,因为前面说了整个项目的主入口文件是app.js,所以我们在app.js中引用它

clipboard.png

现在重启项目,看看是不是有了连接成功的日志

clipboard.png

数据库已连接成功,那么下一步写接口!


max210
282 声望20 粉丝

JavaScripter