详解node + mongoDb(mongoDb安装、运行,在node中链接、增删改查)

1、序言前端

  很久没写博客了,此次主要聊聊 node 和 mongoDb 。 先说明一下技术栈  node + express + mongoose + mongoDb。这篇博客,主要讲述 mongoDb 的下载 、安装 、 配置 、 运行 以及如何在 node 项目中引入 mongoose 并 连接 mongoDb 操做数据库,最后再附带几个简单 建立 数据库、集合、域的实例。node

 

2、目录sql

  一、 下载、安装 mongoDbmongodb

  二、 配置、运行 mongoDb数据库

  三、 node项目中 连接 mongoDbexpress

  四、 node项目中对 mongoDb 实现 数据库 集合 域的建立、编辑等操做json

 

3、下载、安装 mongoDbapi

官方下载连接: https://www.mongodb.com/download-center#community
下载 Windows 64-bit x64 msi 格式的,完事直接傻瓜式安装。或者你也能够选择 customs 自定义安装,去选择一些路径啥的

4、配置、运行 mongoDbasync

在任意没有中文的目录下新建文件夹,如c:\data,在文件夹下存放MongoDB数据库文件与日志文件,如:   ps: 固然你也能够不配置

  c:\dbData\db用于存放mongodb的数据文件

  c:\dbData\log用于存放mongodb的日志文件
 
建立配置文件

  打开MongoDB的安装目录如“C:\Program Files\MongoDB\Server\4\bin”,并在此目录下新建一个mongo.config文件,文件内容以下:
##数据库目录##
dbpath=C:\dbData\db

##日志输出文件##
logpath=C:\dbData\log\db.log

  在当前目录下,即 bin 目录下 打开命令行  输入 mongod --config "C:\Program Files\MongoDB\Server\4\bin\mongo.config" --install   回车mongoose

 

添加环境变量

  在计算机->属性->高级设置->环境变量->系统变量->Path 中加入"C:\Program Files\MongoDB\Server\4\bin"路径。

  而后在 bin 目录下  双击  mongo.exe 启动 MongoDB 服务 

 

而后命令行 net start mongodb 就OK了

 

5、node项目中 连接 mongoDb

  比较简单,代码以下:

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/mongodb');
mongoose.connection.on('connected', function(e) {
  console.log('connect success');
});
mongoose.connection.on('error', function(err) {
  console.error('MongoDB connection error: ' + err);
  process.exit(1);
});
mongoose.Promise = Promise;

  直接connect最简单的连接, MONGODB://IP:端口号/数据库名称, 注意格式和位置,mongoose 会判断,有这个数据库会直接链接,没有的话,会建立,再链接。connection.on 绑定上链接成功/失败的回调函数,直观的的告诉咱们有没有链接成功。若是失败,检查IP和端口号,再检查MongoDB服务是否真的启动了。

  connect参数不少,通常项目中仍是须要配置一下的,这个根据你们具体项目来配置了。好比:

module.exports = {
  production: {
    uri: 'mongodb://localhost/db',
    option: {
      autoIndex: true, 
      reconnectTries: Number.MAX_VALUE, 
      reconnectInterval: 1000, 
      poolSize: 10, 
      bufferMaxEntries: 0
    },
  },
development: {
    uri: 'mongodb://localhost/db-dev',
    option: {
      autoIndex: true, 
      reconnectTries: Number.MAX_VALUE, 
      reconnectInterval: 1000, 
      poolSize: 10, 
      bufferMaxEntries: 0
    },
  },
test: {
    uri: 'mongodb://localhost/db-test',
    option: {
      autoIndex: true, 
      reconnectTries: Number.MAX_VALUE, 
      reconnectInterval: 1000, 
      poolSize: 10, 
      bufferMaxEntries: 0
    },
  }}[process.env.NODE_ENV || 'development']

 

这样就链接好了。

 

 

6、node项目中对 mongoDb 实现 数据库 集合 域的建立等操做

  以上步骤咱们就已经成功安装了MongoDB,并在node项目中成功链接 MongoDB 了,并且 mongodb://localhost/db   这个db就是你的数据库名称,在连接的时候,就已经将数据库建好了,接下来是对集合和域的建立。

      

直接举个例子:

  新建一个 MongoDB 的集合

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const ObjectId = Schema.ObjectId;

const schema = new Schema({
  name: { type: String, default: '' }, // 数据名称
  data: { type: String, default: '' }, //  数据内容
  createTime: { type: Date, default: Date.now },
})

module.exports = mongoose.model('SaveDate', schema);

   写 api 对集合进行操做

const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');
const SaveDate = require('../../models/saveDate.mongo')

router.post('/test/saveData', async (req, res, next) => { const body = req.body; try { if (!body.name){ res.status(400).json({ msg: 'name is required' }); }else if (!body.data){ res.status(400).json({ msg: 'data is required' }); }else { const saveDate = await SaveDate.create({ name: body.name, data: JSON.stringify(body.data) }); res.json({ status: true, saveDate, }); } }catch (e) { console.log(e) res.status(500).json({ status: false, error: e, }); } });

   

 mongoose.model   Mongoose建立集合指令,他的参数是集合名称,以及一个Schema。将Schem映射到当前新建的集合中。也就是咱们所谓的建立表啦。
 mongoose.Schema  Mongoose建立数据Schema指令,存放数据、定义数据类型。这个就是咱们在sql里面 定义表中字段

经过这2步,就算新建好一个集合了,可是如今他是没数据的,接下来须要对集合进行 增删改查 的操做。
//集合中添加数据
const saveDate = await SaveDate.create({
name: body.name,
data: JSON.stringify(body.data)
});
// 查找集合的数据
const list = await SaveDate.find(condition).skip(pageSize * (current - 1)).limit(pageSize);
// 更新集合数据
await Instruction.update({ _id: body._id }, {
$set: set
});
// 删除集合数据
await Instruction.remove({ _id: body._id });
 
以上是最基础的 增、删、改、查 指令,至于更加详细的 Mongoose 指令,这里就不详说了。根据你的须要如今已经实现最基础的操做数据库操做了。



7、 小结

这一套 node + express + Mongoose + MongoDB 技术栈,当中对 数据库 的操做部分就到此结束了。下面稍微总结一下,流程大体以下:

    首先下载、安装、配置、启动 MongoDB 服务
     而后,运行node服务,并在代码中配置、链接MongoDB服务
     最后,在 api 中,对集合进行操做

注: 差点忘记了,最后给你们安利一个 MongoDB 的桌面化软件,简单实用,官方下载连接: https://robomongo.org/download
数据库仍是有可视化工具方便。

  这篇博客讲的不深,主要是给初学者提供一个学习 node + MongoDB 本身搭建api服务的学习方向。我刚开始接触到时候没少走弯路。但愿这篇文章能帮到你们。
  博主热衷于向你们推送前端入门知识,喜欢的童鞋能够关注一下! ps:还有其余不错的博客,但愿你们有好的代码咱们能够一块儿讨论。
相关文章
相关标签/搜索