一, 序言
好久没写博客了, 这次主要聊聊 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:\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 回车
添加环境变量
在计算机 -> 属性 -> 高级设置 -> 环境变量 -> 系统变量 ->Path 中加入 "C:\Program Files\MongoDB\Server\4\bin" 路径.
然后在 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: 还有其他不错的博客, 希望大家有好的代码我们可以一起讨论.
来源: https://www.cnblogs.com/pengfei-nie/p/9990154.html