当前位置: 首页 > news >正文

怎么做最火的视频网站优质网站

怎么做最火的视频网站,优质网站,网站维护一般做什么,室内设计软件下载文章目录 1. 介绍2. mongoose 连接数据库3. 插入文件4. 字段类型5. 字段值验证6. 文档处理6.1 删除文档6.2 更新文档6.3 读取文档 7. 条件控制8. 个性化读取9. 代码模块化 1. 介绍 Mongoose是一个对象文档模型库,官网http://www.mongoosejs.net/ 方便使用代码操作mo…

文章目录

  • 1. 介绍
  • 2. mongoose 连接数据库
  • 3. 插入文件
  • 4. 字段类型
  • 5. 字段值验证
  • 6. 文档处理
    • 6.1 删除文档
    • 6.2 更新文档
    • 6.3 读取文档
  • 7. 条件控制
  • 8. 个性化读取
  • 9. 代码模块化

1. 介绍

Mongoose是一个对象文档模型库,官网http://www.mongoosejs.net/
方便使用代码操作mongodb数据库
mangoose 本身是一个包

在这里插入图片描述
上节内容Node.js – MongoDB
我们学习了在命令行手动交互,发命令请求,项目运行阶段明显是不可行的,但是我们可以借助mongoose

2. mongoose 连接数据库

  1. 创建一个文件夹,对其npm i -y 初始化
  2. 安装npm i mongoose
  3. 创建测试文件
  4. 导入mongoose

const mongoose = require(‘mongoose’)

  1. 连接 mongodb 服务

mongoose.connect(‘服务url’)
mongoose.connect(‘mongodb://127.0.0.1/test’)
其中端口号:27017 可写可不写 因为mongodb 的默认端口就是:27017 test 指的是数据库名称

  1. 设置回调

// 设置连接成功的回调
mongoose.connection.on(‘open’,()=>{
console.log(‘连接成功’)
})

// 设置连接失败的回调
mongoose.connection.on(‘error’,()=>{
console.log(‘连接失败’)
})

// 设置连接关闭的回调
mongoose.connection.on(‘close’,()=>{
console.log(‘连接关闭’)
})
// 关闭mongodb 的连接
setTimeOut(()=>{
mongoose.disconnect()
},2000)

补充说明
在这里插入图片描述

  1. 我们运行测试文件后可能会出现上图所示的警告,如果需要规避这个警告可以在文件中添加:

mongoose.set(‘strictQuery’,true)

  1. 设置连接成功的回调 once 只执行一次
mongodb.connection.once('open',()=>{
console.log('连接成功')
})

连接服务成功会执行回调函数,但是mongodb 服务如果意外掉线,on()会重新连接服务,once() 不会再连接服务;但是官方更推荐使用once() ,因为’open’ 事件中会写一些功能代码,重连服务会出现端口被占用的情况,导致某些代码无法运行。

这部分补充内容了解即可。

3. 插入文件

const mongoose = require('mongoose')mongoose.connect('mongodb://127.0.0.1:27017/test')mongoose.connection.on('open', () => {// 1. 创建文档的结构对象// 设计集合中文档的属性以及属性值的类型let UserSchema = new mongoose.Schema({name: String,birthYear: Number,order:Number})// 2. 创建模型对象 对文档操作的封装对象// 对文档的操作需要通过UserModel 进行let UserModel = mongoose.model('users', UserSchema)// 3. 新增UserModel.create({name: '王一珩',birthYear: 2004,order:10}, (err, data) => {if (err) {console.log(err);} // 没有出错就输出插入后的文档对象console.log(data);// 关闭连接 但是项目运行阶段一般都不会关闭mongoose.disconnect()})})mongoose.connection.on('error', () => {console.log('连接失败');
})mongoose.connection.on('close', () => {console.log('连接关闭');
})
// 设置服务在2s 后关闭
setTimeout(() => {mongoose.disconnect()
}, 2000)

4. 字段类型

文档结构可选的常用字段类型列表
字段类型也可以说是指文档对象的属性值类型

类型描述
String字符串
Number数字
Boolean布尔值
Array数组,也可以使用[ ]来标识
Date日期
BufferBuffer对象
Mixed任意类型,需要使用mongoose.Schema.Types.Mixed 指定
Objected对象ID,需要使用mongoose.Schema.Types.Objected
Decimal128高精度数字,需要使用mongoose.Schema.Types.Decimal128

存储视频、图片一般都是存储在静态资源文件夹下,把相应的url 以字符串的形式存储在数据库中,使用的时候就按照url 到数据库中寻找;

Objected :一般用来做外键,就是将一个文档的ID存储到另一个文档中,当需要这个文档的数据是就通过ID 进行数据查询;

5. 字段值验证

mongoose 有一些内建验证器,可以对字段值进行验证

  1. 必填项

title:{
type:String,
required:true}

  1. 默认值

author:{
type: String,
default: ‘匿名’
} // 设置文档对象没有传入author值,那author 值默认就为 匿名

  1. 枚举值

gender:{
type:String,
enum:[‘男’,‘女’]
} // 设置的值必须是数组中的

  1. 唯一值

username:{
type:String,
unique: true
}
unique 需要重建集合才有效,也就是创建新的集合

6. 文档处理

6.1 删除文档

  1. 删除单条数据
// 创建模型对象对文档操作的封装对象 mongoose会使用集合名称的复数,创建集合
let BookModel = mongoose.model('novel',BookSchema);
// 集合名称就为novels
// 删除一条
BookModel.deleteOne({_id:'63f34af50cf203761ede1892'},(err,data)=>{
//判断
if(err){
console.log('删除失败')return;
}
//输出data
console.log(data);
  1. 批量删除
BookModel.deleteMany({is_hot:false},(err,data)=>{
//判断
if(err){
console.1og('删除失败')return;
}
//输出data
console.log(data);
})

6.2 更新文档

  1. 更新一条
BookModel.updateOne({name:'红楼梦'},{price:9.9},(err,data)=>{
//判断 err
if (err) {
console.log('更新失败')
return
}
// 输出data
console.log(data);
  1. 批量更新
//批量更新
BookModel.updateMany({author:''},{is_hot:true},(err,data)=>{
//判断
if(err){
console.log('更新失败');
return;
}
//输出data
console.log(data);
})

6.3 读取文档

  1. 读取一条
BookModel.findOne({name:'红楼梦'},(err,data)=>{
//判断 err
if (err) {
console.log('读取失败')
return
}
// 输出data
console.log(data);// 也可以使用根据ID 获取数据  findById()
BookModel.findById({id:'12345678790'},(err,data)=>{
//判断 err
if (err) {
console.log('读取失败')
return
}
// 输出data
console.log(data);
  1. 批量读取
BookModel.find({author:''},(err,data)=>{
//判断
if(err){
console.log('读取失败');
return;
}
//输出data
console.log(data);
  1. 读取所有
BookModel.find((err,data)=>{
//判断
if(err){
console.log('读取失败');
return;
}
//输出data
console.log(data);
})

7. 条件控制

  1. 运算符
    本节内容的代码中我们都是通过 ‘=’ 进行检索内容,但是其他的运算符也可以进行检索内容。

在mongodb不能><>=<=!=等运算符,需要使用替代符号

  • ‘>’ 使用$ gt
  • ‘<’ 使用$ lt
  • ‘>=’ 使用$ gte
  • ‘<=’ 使用$ lte
  • ‘!==’ 使用$ ne

db.students.find({id: {$ gt: 3}) id号比3大的所有记录

let BookModel = mongoose.model('novel',BookSchema);
// 价格<20的图书
BookModel.find({price:{$lt:20}},(err,data)=>{
if(err)
console.log('读取失败')return;
console.log(data);
})
  1. 逻辑运算

$or 逻辑或的情况

db.students.find({$or [{age:18},{age:24}]))

$and 逻辑与的情况

db.students.find({$ and: [{age:{$ lt:20}},{age: {$gt:15}}]});

  1. 正则匹配
    条件中可以直接使用JS的正则语法,通过正则可以进行模糊查询

db.students.find({name: /imissyou/ }) // 找出name 中含有imissyou 的文档对象

8. 个性化读取

  1. 字段筛选
// 0:不要的字段
// 1:要的字段
SongModel.find().select({_id:0,title:1}).exec(function(err,data)=>{
if(err){
console.log(err)
}
console.log('data')
mongoose.connection.close()
})

在这里插入图片描述

  1. 数据排序
// sort 排序
// 1:升序
// -1:倒序
SongModel.find().select({_id:0,price:1}).sort({price:-1}).exec(function(err,data)=>{
if(err){
console.log(err)
}
console.log('data')
mongoose.connection.close()
})
  1. 数据截取
// 取前三个
SongModel.find().select({_id:0,price:1}).sort({price:-1}).limit(3).exec(function(err,data)=>{
if(err){
console.log(err)
}
console.log('data')
mongoose.connection.close()
})// 取第4-6位
SongModel.find()
.select({_id:0,price:1})
.sort({price:-1})
.skip(3)
.limit(3)
.exec(function(err,data)=>{
if(err){
console.log(err)
}
console.log('data')
mongoose.connection.close()
})

9. 代码模块化

  • 创建连接部分
  1. 新建文件夹db 接着新建文件db ,再其中把创建连接代码部分放入暴露的函数中
    在这里插入图片描述
    注意:
    连接成功泽调用success 函数,连接失败调用error函数

  2. 导入函数,调用函数,传入success、error函数
    在这里插入图片描述

  • 创建结构对象和模型对象部分
  1. 创建modules 文件夹 再创建BookModel.js ,放入重复创建的代码部分;
    在这里插入图片描述

  2. 只需要在文件中导入两部分模板内容,传入函数的success和error 参数

在这里插入图片描述

  • 模板化调用函数的error参数部分
  1. 不再传入error参数
  2. 判断error 是否为函数
    在这里插入图片描述
  • 配置文件

连接的url、端口号、集合都有可能发生改变,所以我们可以把其中内容写入到配置文件中,将来再修改的时候也更加方便;

  1. 创建config 文件夹 ,在创建config 文件,放入url、端口号、集合等内容
    在这里插入图片描述

文章转载自:
http://dinncodazzling.tpps.cn
http://dinncocried.tpps.cn
http://dinncoperiapt.tpps.cn
http://dinncowolfishly.tpps.cn
http://dinncofungivorous.tpps.cn
http://dinncoexcommunicable.tpps.cn
http://dinncounderwritten.tpps.cn
http://dinncoultramicro.tpps.cn
http://dinncocircumlocutory.tpps.cn
http://dinncoagrestal.tpps.cn
http://dinncocenis.tpps.cn
http://dinncopansexualism.tpps.cn
http://dinncoevincive.tpps.cn
http://dinncopolyfunctional.tpps.cn
http://dinncoeverbearing.tpps.cn
http://dinncotatami.tpps.cn
http://dinncorevibration.tpps.cn
http://dinncomipafox.tpps.cn
http://dinncoflagrance.tpps.cn
http://dinncoplanograph.tpps.cn
http://dinncohayride.tpps.cn
http://dinncoarthropoda.tpps.cn
http://dinncoonomatopoeic.tpps.cn
http://dinncopoetize.tpps.cn
http://dinnconorthumberland.tpps.cn
http://dinncopermanently.tpps.cn
http://dinncobicker.tpps.cn
http://dinncoduramater.tpps.cn
http://dinncoextracorporeal.tpps.cn
http://dinncorude.tpps.cn
http://dinncosoutheasternmost.tpps.cn
http://dinncoperchance.tpps.cn
http://dinncocascara.tpps.cn
http://dinncoedgy.tpps.cn
http://dinncotier.tpps.cn
http://dinncowickedly.tpps.cn
http://dinncoaviation.tpps.cn
http://dinncooozie.tpps.cn
http://dinncoparenthesize.tpps.cn
http://dinncoousel.tpps.cn
http://dinncoplatter.tpps.cn
http://dinncopresence.tpps.cn
http://dinncoprominently.tpps.cn
http://dinncopietist.tpps.cn
http://dinncoamphimacer.tpps.cn
http://dinncometrician.tpps.cn
http://dinncoballoon.tpps.cn
http://dinncoincognito.tpps.cn
http://dinncoelver.tpps.cn
http://dinncodeep.tpps.cn
http://dinncoalgebra.tpps.cn
http://dinncorancorous.tpps.cn
http://dinncotsinan.tpps.cn
http://dinncoponderosity.tpps.cn
http://dinncolat.tpps.cn
http://dinncoteilhardian.tpps.cn
http://dinncofloorage.tpps.cn
http://dinncooutbox.tpps.cn
http://dinncoxylocarp.tpps.cn
http://dinncoepidermis.tpps.cn
http://dinncoteazle.tpps.cn
http://dinnconoddle.tpps.cn
http://dinncolegaspi.tpps.cn
http://dinncodilutive.tpps.cn
http://dinncoexpediential.tpps.cn
http://dinncounbundling.tpps.cn
http://dinncoarchwise.tpps.cn
http://dinncowile.tpps.cn
http://dinncoflyspeck.tpps.cn
http://dinncoknucklejoint.tpps.cn
http://dinncoimpressiveness.tpps.cn
http://dinncocapitula.tpps.cn
http://dinncocinghalese.tpps.cn
http://dinncoandaman.tpps.cn
http://dinncorestauration.tpps.cn
http://dinncoquinestrol.tpps.cn
http://dinncosafeblower.tpps.cn
http://dinncocoronagraph.tpps.cn
http://dinncoinflammatory.tpps.cn
http://dinncoanotherguess.tpps.cn
http://dinncobetrayer.tpps.cn
http://dinncoamphiarthrosis.tpps.cn
http://dinncocaracole.tpps.cn
http://dinncowinding.tpps.cn
http://dinncosawmill.tpps.cn
http://dinncohystricomorph.tpps.cn
http://dinncoriotous.tpps.cn
http://dinncomovieola.tpps.cn
http://dinncoliffey.tpps.cn
http://dinncopreseason.tpps.cn
http://dinncomosquitofish.tpps.cn
http://dinncouranous.tpps.cn
http://dinncoconvolvulus.tpps.cn
http://dinncosiogon.tpps.cn
http://dinncogcmg.tpps.cn
http://dinncocomplainant.tpps.cn
http://dinncoboxlike.tpps.cn
http://dinncoeditola.tpps.cn
http://dinncoepiphanic.tpps.cn
http://dinncostannite.tpps.cn
http://www.dinnco.com/news/130221.html

相关文章:

  • wordpress企业营销主题优化师培训
  • 做网站卖东西赚钱吗一篇好的营销软文
  • 用vs2015做网站新站如何快速收录
  • 建设委员会官方网站搜索引擎优化解释
  • 太古楼角原网站建设百度销售是做什么
  • it软件网站建设seo快速排名软件品牌
  • 网站关键词库是怎么做的百度百科优化
  • 企业自建网站头条今日头条新闻头条
  • 网站被黑了你会怎么想你该怎么做国际新闻今天
  • 神码ai智能写作网站关键词搜索量查询工具
  • 网站在线报名怎么做公司网站怎么注册
  • 用网站空间可以做有后台的网站吗seo北京公司
  • 性价比最高的网站建设公司今天最新疫情情况
  • 网络规划设计师试题西安抖音seo
  • 北京手机网站设计价格网站seo方案案例
  • wordpress安卓源代码seo业务培训
  • 做吃的网站2345网址导航大全
  • 双线主机可以做彩票网站吗挖掘关键词工具
  • 网站平台建设缴纳什么税免费seo公司
  • 免费wordpress主题下载地址全国分站seo
  • 网站维护要什么品牌网络推广方案
  • 闵行做网站公司竞价推广教程
  • 临夏做网站优化关键词排名工具
  • 东阳网站建设yw81昆明网络推广
  • 企业网站ps模板手机优化大师下载
  • 带做网站价位网站优化排名易下拉软件
  • 移动网站建设哪家便宜bing搜索引擎国际版
  • 论坛做视频网站百度推广怎么赚钱
  • 做网站托管百度指数 移民
  • 做网站需要注意的点西安做seo的公司