复习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 ...
随机推荐
- 设计模式——Adapter Pattern 适配器模式
我第一次接触设计模式,选取了四大类型里面的结构型,这类型的特点是关注类&对象之间的组合(使用继承),我从中选取适配器模式来具体学习. 一.适配器模式(Adapter Pattern)定义: 适 ...
- 深度学习中的特征(feature)指的是什么?
一般在machine learning意义上,我们常说的feature,是一种对数据的表达.当然,要衡量一种feature是否是合适的表达,要根据数据,应用,ML的模型,方法....很多方面来看.一般 ...
- 手写Tomcat
学习JavaWeb之后,只知道如何部署项目到Tomcat中,而并不了解其内部如何运行,底层原理为何,因此写下此篇博客初步探究一下.学习之前需要知识铺垫已列出:Tomcat目录结构.HTTP协议.IO. ...
- postman之设置关联
接口关联(上一个接口的返回参数作为下一个接口的入参使用): 一:在第一个接口的test点击Response body:JSON value check和set an environment varia ...
- [redis读书笔记] 第一部分 数据结构与对象 对象类型
- 从前面redis的基本数据结构来看,可以看出,redis都是在基本结构(string)的基础上,封装了一层统计的结构(SDS),这样让对基本结构的访问能够更快更准确,提高可控制度. - redis ...
- ELK logstash 各种报错
1.logstash 启动后数据传输了,但是 ElasticSearch 中没有生成索引,查看logstash日志,报错如下 [2018-06-08T14:46:25,387][WARN ] [log ...
- Basic Auth攻击
1.Basic Auth认证简介 Basic身份认证,是HTTP 1.0中引入的认证方案之一.虽然方案比较古老,同时存在安全缺陷,但由于实现简单,至今仍有不少网站在使用它. 例如Apche Tomca ...
- 使用A线程打印1-52,B线程打印A-Z,要求按照12A34B56C....5152Z的顺序进行交替打印
多线程同步问题,都需要用到监视器,用来监视资源是否可用.C++中使用condition_variable,Java中使用Condition来实现同步. 1. 实现思路 需要有一个全局变量控制当前该哪个 ...
- LINQ标准查询运算符的执行方式-延时之流式处理
linq的延时执行是指枚举时才去一个个生成结果元素. 流式处理是linq延时执行的一种,在生成元素前不需要获取所有源元素,只要获取到的源元素足够计算时,便生成结果元素. 流式处理的标准查询运算符返回值 ...
- .NET Core MVC下的TagHelper
.NET web开发者在开发过程中,一定都踩过的坑,明明修改了js文件,可是部署到生产环境,客户反馈说:“还是报错啊”..然后一脸懵逼的去服务器上看文件,确实已经更新了.有经验的coder可能就想到了 ...