复习mongoose的基本使用
mongoose用起来更便捷,更方便些
使用mongodb数据驱动写一个错误日志
这里没有使用asset断言
import mongodb from 'mongodb'
const MongoClient = mongodb.MongoClient
const url = 'mongodb://localhost:27017/edu'
export default (errLog, req, res, next) => {
// 1. 将错误日志记录到数据库,方便排查错误
// 2. 发送响应给用户,给一些友好的提示信息
// { 错误名称:错误信息:错误堆栈:错误发生时间 }
// 1. 打开连接
MongoClient.connect(url, (err, db) => {
db
.collection('error_logs')
.insertOne({
name: errLog.name,
message: errLog.message,
stack: errLog.stack,
time: new Date()
}, (err, result) => {
res.json({
err_code: 500,
message: errLog.message
})
})
// 3. 关闭连接
db.close()
})
}
存储结构
- 一个计算机上可以有一个数据库服务实例
- 一个数据服务实例上可以有多个数据库
- 一个数据库中可以有多个集合
- 集合根据数据的业务类型划分
- 例如用户数据、商品信息数据、广告信息数据。。。
- 对数据进行分门别类的存储
- 集合在 MongoDB 中就类似于数组
- 一个集合中可以有多个文档
- 文档在 MongoDB 中就是一个 类似于 JSON 的数据对象
- 文档对象是动态的,可以随意的生成
- 为了便于管理,最好一个集合中存储的数据一定要保持文档结构的统一(数据完整性)
{
collection1: [
{ a: { age: 18, name: '', lsit: [], is: true } },
{ 文档2 },
{ 文档3 }
],
collection2: [
],
collection3: [
],
collection4: [
],
}
使用mongoose
Mongoose
安装:
# npm install --save mongoose
yarn add mongoose
const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost/test')
// 1. 创建一个模型架构,设计数据结构和约束
const studentSchema = mongoose.Schema({
name: String,
age: Number
})
// 2. 通过 mongoose.model() 将架构发布为一个模型(可以把模型认为是一个构造函数)
// 第一个参数就是给你的集合起一个名字,这个名字最好使用 帕斯卡命名法
// 例如你的集合名 persons ,则这里就命名为 Person,但是最终 mongoose 会自动帮你把 Person 转为 persons
// 第二个参数就是传递一个模型架构
const Student = mongoose.model('Student', studentSchema)
// 3. 通过操作模型去操作你的数据库
// 保存实例数据对象
const s1 = new Student({
name: 'Mike',
age: 23
})
s1.save((err, result) => {
if (err) {
throw err
}
console.log(result)
})
//查询
Student.find((err, docs) => {
if (err) {
throw err
}
console.log(docs)
})
Student.find({ name: 'Mike' },(err, docs) => {
if (err) {
throw err
}
console.log(docs)
})
复习mongoose的基本使用的更多相关文章
- iOS总结_UI层自我复习总结
UI层复习笔记 在main文件中,UIApplicationMain函数一共做了三件事 根据第三个参数创建了一个应用程序对象 默认写nil,即创建的是UIApplication类型的对象,此对象看成是 ...
- vuex复习方案
这次复习vuex,发现官方vuex2.0的文档写得太简略了,有些看不懂了.然后看了看1.0的文档,感觉很不错.那以后需要复习的话,还是先看1.0的文档吧.
- mongoose - 让node.js高效操作mongodb
Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...
- 在mongoose中使用$match对id失效的解决方法
Topic.aggregate( //{$match:{_id:"5576b59e192868d01f75486c"}}, //not work //{$match:{title: ...
- 我的操作系统复习——I/O控制和系统调用
上篇博客介绍了存储器管理的相关知识——我的操作系统复习——存储器管理,本篇讲设备管理中的I/O控制方式和操作系统中的系统调用. 一.I/O控制方式 I/O就是输入输出,I/O设备指的是输入输出设备和存 ...
- 复习(1)【Maven】
终于开始复习旧知识了,有输入必然要有输出.输入和输出之间的内化过程尤为重要,在复习的同时,真正把学到的东西积淀下来,加深理解. Maven项目概念与配置 Maven是一个项目管理和综合工具.Maven ...
- Mongo基础使用,以及在Express项目中使用Mongoose
MongoDB的基本使用 MongoDB特点: 使用BSON存储数据 支持相对丰富的查询操作(相对其他nosql数据库) 支持索引 副本集(支持多个实例/多个服务器运行同个数据库) 分片(数据库水平扩 ...
- mongoose数据库连接和操作
var mongoose = require('mongoose') mongoose.connect('mongodb://localhost:27017/hometown'); var db = ...
- mongoose 和 mongoDB
第三方学习地址:http://blog.csdn.net/foruok/article/details/47746057 下载mongoDB https://www.mongodb.com/downl ...
随机推荐
- CCF_201409-1_相邻数对
水. #include<iostream> #include<cstdio> #include<algorithm> using namespace std; in ...
- HDU_5602_概率dp
http://acm.hdu.edu.cn/showproblem.php?pid=5602 dp[1][i][j]表示轮到第二个人操作时,第一人总和i,第二人总和j,第一人胜的最小概率(因为每个人都 ...
- 使用MS Devops 来部署CRM Solution
在D365 CE开发当中,有一个非常痛苦的问题就是开发,测试环境中的export import solution 部署问题. Devops中能很好的解决这个问题. 工作原理: 在Azure Devop ...
- 《 Java 编程思想》CH08 多态
在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征. 多态通过分离做什么和怎么做,从另一个角度将接口和实现分离开来. "封装"通过合并特征和行为来创建新的数据类 ...
- 【OpenGL】GL_DEPTH_TEST深度测试问题
记录一个深度测试的问题 在实现一个简单的OpenGL程序时,遇到了一个问题,深度测试总是有问题,无法正常显示,如下 正常情况为 通过调试发现屏幕空间中的所有深度值均为1. OpenGL代码如下: vo ...
- java架构之路-(微服务专题)ribbon的基本使用和内部算法的自我实现
上次回归: 上次我们主要说了,我们的注册中心nacos的使用,如我们的命名空间.分组.集群.版本等是如何使用的,如果是这样呢?我们现在有三个用户服务和三个订单服务,我们应该如何分发这些请求呢?都请求到 ...
- Html / XHtml 解析 - Parsing Html and XHtml
Html / XHtml 解析 - Parsing Html and XHtml HTMLParser 模块 通过 HTMLParser 模块来解析 html 文件通常的做法是, 建立一个 HTMLP ...
- vue学习(一)项目搭建
首先需要配置node和npm,如果没有安装的话,百度一下安装教程. 如果感觉npm下载速度慢,可以使用淘宝镜像cnpm,链接地址: http://npm.taobao.org/ 安装cnpm npm ...
- LwIP的SNMP学习笔记
关于这方面的资料网上非常少,做一下笔记. 在LwIP中,在\lwip-1.4.1\src\core\snmp目录下有SNMP相关的c文件,在lwip-1.4.1\src\include\lwip目录下 ...
- linux系统的启动流程梳理
1. 不同版本的linux系统的启动流程 1.1 centos6.x系统的启动流程 其详细启动步骤如下: 1)开机,BIOS自检,检查各个硬件是否正常 2)读取硬盘MBR信息,引导系统启动 3)加载g ...