摘要:类比一下你有一个巨型停车场,里边分了不同的停车区集合,这里的,每个停车区可以停很多车下文提到的,相当于每个数据集合里边可以有很多张数据表。
Node.js利用mongoose连接mongodb数据库
Node.js连接mongodb数据库有很多种方法,通过mongoose模块引入是其中的一个方法
代码组织结构
|---|根目录 |---|---|connect.js(mongoose测试连接) |---|---|user.js(定义user数据表) |---|---|operate.js(定义mongodb的增删改查功能) |---|---|login.js(Node后台调用operate.js文件的方法处理数据)1. 引入mongoose测试连接
当前使用的mongoose版本为4.13.7
该文件为connect.js
1.1 代码部分const mongoose = require("mongoose"); const DB_URL = "mongodb://127.0.0.1:27017/infos"; mongoose.Promise = global.Promise; mongoose.connect(DB_URL, { useMongoClient: true }); mongoose.connection.on("connected", () => { console.log("mongodb数据库连接成功") }); mongoose.connection.on("error", (error) => { console.log("mongodb数据库连接失败", error) }); module.exports = mongoose;1.2 代码分析 1.2.1 引入mongoose模块
const mongoose = require("mongoose");
1.2.2 获取mongodb的本机地址const DB_URL = "mongodb://127.0.0.1:27017/infos";
127.0.0.1是本地IP地址
27017是mongodb的服务启动端口
infos是mongodb的一个数据集合名字
mongodb可以有很多数据集合,每个集合中可以有很多数据表。
类比一下:你有一个巨型停车场(mongodb),里边分了不同的停车区(集合,这里的infos),每个停车区可以停很多车((下文提到的user),相当于每个数据集合里边可以有很多张数据表)。
如果需要给mongodb加上用户及密码,可以这样
const DB_URL = "mongodb://username:password@127.0.0.1:27017/infos";
其中username为用户名,中间英文:,password为密码,其余不变
1.2.3 连接数据库成功mongoose.connection.on("connected", callback())
数据库连接成功后,会在控制台输出mongodb数据库连接成功
1.2.4 连接数据库失败mongoose.connection.on("error", callback())
数据库连接成功后,会在控制台输出mongodb数据库连接失败和错误信息
1.2.5 导出mongoose模块module.exports = mongoose;
2. 定义每张数据表的字段该文件为user.js
2.1 代码介绍const mongoose = require("mongoose"); const db = require("./connect.js"); const userSchema = new mongoose.Schema({ number: { type: Number}, email: { type: String }, password: { type: String }, rePassword: { type: String }, mobile: { type: String }, question: { type: String }, answer: { type: String }, }); let userModel = db.model("user", userSchema); module.exports = userModel;2.2 代码分析 2.2.1 引入mongoose模块
const mongoose = require("mongoose");
2.2.1 引入连接mongodb数据库的模块const db = require("./connect.js");
2.2.2 定义Schemaconst userSchema = new mongoose.Schema({})
通过mongoose对象的Schema属性创建一个Schema对象
Schema原意为架构
在mongodb中,每一个数据字段都要有固定的数据类型,所以Schema在mongoose中的意思为,每一张数据表对应的字段的数据类型
Schema所能够拥有的数据类型有以下几个
String
Number
Date
Buffer
Boolean
Mixed
ObjectId
Array
字段介绍,以number字段为例
type是该字段的数据类型
default是该字段的默认值
还有很多其他的属性,以及可以自定义属性
2.2.3 确认数据表和该数据表的字段let userModel = db.model("user", userSchema);
定义一个数据表userModel
使用db.model方法,第一个参数是数据表的名字,第二个参数是该数据表使用的Schema
2.2.4 最终导出定义的数据表module.exports = userModel;
导出之后,在operate.js中使用这个对象的mongodb的增删改查方法
3. 定义mongodb的增删改查功能 3.1 代码部分该文件为operate.js
let userModel = require("./user.js"); module.exports = { save(data) { return new Promise((resolve, reject) => { userModel.create(data, (err, docs) => { if (err) { rejct(err); } else { resolve(docs); } }) }) }, find(data = {}, fields = null, options = {}) { return new Promise((resolve, reject) => { //model.find(需要查找的对象(如果为空,则查找到所有数据), 属性过滤对象[可选参数], options[可选参数], callback) userModel.find(data, fields, options, (error, doc) => { if (error) { reject(error) } else { resolve(doc) } }) }) }, findOne(data) { return new Promise((resolve, reject) => { //model.findOne(需要查找的对象,callback) userModel.findOne(data, (error, doc) => { if (error) { reject(error) } else { resolve(doc) } }) }) }, findById(data) { return new Promise((resolve, reject) => { //model.findById(需要查找的id对象 ,callback) userModel.findById(data, (error, doc) => { if (error) { reject(error) } else { resolve(doc) } }) }) }, update(conditions, update) { return new Promise((resolve, reject) => { //model.update(查询条件,更新对象,callback) userModel.update(conditions, update, (error, doc) => { if (error) { reject(error) } else { resolve(doc) } }) }) }, remove(conditions) { return new Promise((resolve, reject) => { //model.update(查询条件,callback) userModel.remove(conditions, (error, doc) => { if (error) { reject(error) } else { resolve(doc) } }) }) } };3.2 代码分析
引入user模块
let userModel = require("../models/users");
引入该文件的目的是,让userModel这个数据表直接的调用mongodb的各种方法
4. 后台直接使用operate处理数据该文件为login.js
4.1 代码部分const express = require("express"); const router = express.Router(); let operate = require("./operate"); router.post("/", function (req, res, next) { let param = {}; param.email = req.body.email; param.password = req.body.password; console.log(param); operate.save(param).then(result => { if (result) { res.json({ data: result, success: true }) } else { res.json({ data: result, success: false }) } }); }); module.exports = router;4.2 代码分析
需要熟练使用Express的router方法
引入Express,定义一个post方法
post方法传递的对象数据挂在在req.body上
直接调用operate.save()方法,传递param对象参数
获取到返回结果result,对获取到的结果进行进一步处理
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/19211.html
摘要:类比一下你有一个巨型停车场,里边分了不同的停车区集合,这里的,每个停车区可以停很多车下文提到的,相当于每个数据集合里边可以有很多张数据表。 Node.js利用mongoose连接mongodb数据库 Node.js连接mongodb数据库有很多种方法,通过mongoose模块引入是其中的一个方法 代码组织结构 |---|根目录 |---|---|connect.js(mongoose测...
摘要:搭建后台的全过程近期基于搭建前端项目,搭建后台,遇到了不少问题,总结博客如下,有什么不正确的地方,请大家批评指正是非关系型数据库。是用来启动的,是的命令行客户端。 Node + mongoDB 搭建后台的全过程 近期基于 vue-cil 搭建前端项目, express + mongoose 搭建后台,遇到了不少问题,总结博客如下,有什么不正确的地方,请大家批评指正^ _ ^! mong...
摘要:前言要做一个全沾的工程师,对于后端和数据库来说,即使不认识也要见个面的。基本了解的概念就好,主要是安装上数据库,并进行简单的增删操作。 前言:要做一个全沾的工程师,对于后端和数据库来说,即使不认识也要见个面的。本文给的例子很简单,也贴出来源码,只要一步步下来,就可以跑起来啦~~~ 思考一个需求:做一个登录页面,自己搭建服务和数据库,将用户输入的登录信息保存到数据库如何完成呢:首先选择...
摘要:本文源码简介之前刚入门并做好了一个简而全的纯全家桶的项目,数据都是本地模拟请求的详情请移步这里为了真正做到数据库的真实存取,于是又开始入门了并以此来为之前的页面写后台数据接口。 本文源码:Github 简介: 之前刚入门vue并做好了一个简而全的纯vue2全家桶的项目,数据都是本地 json 模拟请求的;详情请移步这里:vue-proj-demo 为了真正做到数据库的真实存取,于是又...
摘要:的逻辑结构是一种层次结构,主要由文档集合数据库这三部分组成的。文档由键值对构成,像等,它是核心单元,的文档,相当于关系数据库中的一行记录。我们以此为例看它如何使用真实项目中参考学习笔记之的使用入门教程的一些操作命令 showImg(https://segmentfault.com/img/bVN45N?w=1192&h=578); 简介 在说MongoDB数据插入操作之前,我们先来简单...
阅读 1791·2021-08-19 11:12
阅读 1377·2021-07-25 21:37
阅读 959·2019-08-30 14:07
阅读 1243·2019-08-30 13:12
阅读 625·2019-08-30 11:00
阅读 3503·2019-08-29 16:28
阅读 957·2019-08-29 15:33
阅读 2939·2019-08-26 13:40