zoukankan      html  css  js  c++  java
  • 详解node + mongoDb(mongoDb安装、运行,在node中连接、增删改查)

    一、序言

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

     

    二、目录

      1、 下载、安装 mongoDb

      2、 配置、运行 mongoDb

      3、 node项目中 链接 mongoDb

      4、 node项目中对 mongoDb 实现 数据库 集合 域的创建、编辑等操作

     

    三、下载、安装 mongoDb

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

    四、配置、运行 mongoDb

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

      c:dbDatadb用于存放mongodb的数据文件

      c:dbDatalog用于存放mongodb的日志文件
     
    创建配置文件

      打开MongoDB的安装目录如“C:Program FilesMongoDBServer4in”,并在此目录下新建一个mongo.config文件,文件内容如下:
    ##数据库目录##
    dbpath=C:dbDatadb
    
    ##日志输出文件##
    logpath=C:dbDatalogdb.log

      在当前目录下,即 bin 目录下 打开命令行  输入 mongod --config "C:Program FilesMongoDBServer4inmongo.config" --install   回车

     

    添加环境变量

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

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

    然后命令行 net start mongodb 就OK了

     

    五、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']

     

    这样就连接好了。

     

    六、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 指令,这里就不详说了。根据你的需要现在已经实现最基础的操作数据库操作了。



    七、 小结

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

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

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

      这篇博客讲的不深,主要是给初学者提供一个学习 node + MongoDB 自己搭建api服务的学习方向。我刚开始接触到时候没少走弯路。希望这篇文章能帮到大家。
      
    博主热衷于向大家推送前端入门知识,喜欢的童鞋可以关注一下! ps:还有其他不错的博客,希望大家有好的代码我们可以一起讨论。

     

     

     
  • 相关阅读:
    《基于玩家分享行为的手游传播模式研究》
    并行多核体系结构基础——第四章知识点和课后习题
    numpy中的nan和常用方法
    《基于多层复杂网络的传播行为建模与分析》
    《基于SD-SEIR模型的实验室人员不安全行为传播研究》
    《基于SIR的路边违停行为传播模型研究》
    《基于SIRS模型的行人过街违章传播研究》
    阿里巴巴编码规范-考试认证
    测试菜鸟!!当领导我问:“测得怎么样了?”我慌到一P
    国内软件测试过度吹捧自动化测试,然而在国外是这样子的
  • 原文地址:https://www.cnblogs.com/pengfei-nie/p/9990154.html
Copyright © 2011-2022 走看看