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

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

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

整理后端目录

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

clipboard.png

bin/www是项目的启动文件,启动项目除了上次说的npm start,还能够再命令后执行 node bin/www,其实这两个命令是同样的,只不过在package.json文件中二者创建了连接,以下图
clipboard.pngmongodb

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

clipboard.png

安装mongoDB数据库

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

安装mongoose

mongoosemongodb的一个对象模型工具,有了它,能够很方便的操做mongodb数据库,还不是很了解mongoose的小伙伴自行google,资料有不少。
命令行输入 npm install mongoose --saveexpress

安装完成后,首先要定义模型
models文件夹下新建一个post.js 定义文章的模型,填入内容npm

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 定义管理员模型,填入内容json

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数据库,填入内容segmentfault

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

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

相关文章
相关标签/搜索